【问题标题】:Creating a .txt file in C++ with variables在 C++ 中使用变量创建 .txt 文件
【发布时间】:2015-07-26 01:58:52
【问题描述】:

因此,我正在设计一款使用文本文件存储和读取数据的游戏。但是我需要能够以重复的方式执行此操作,因此每个文本文件的名称在程序上都需要不同。我认为使用变量作为名称可以解决这个问题,但我很难做到这一点并让编译器使用它。 这是我当前将“hello”写入名为“test.txt”的文本文件的代码:

ofstream myfile; myfile.open("test.txt"); myfile << "hello"; myfile.close();

现在,我可以用单个 char* 指针或 char 数组缓冲区替换“test.txt”,但我需要将文件名与 .txt 扩展名分开。 我的想法是以某种方式组合一个 char* 变量作为名称引用(例如星系、恒星、行星等),加上一个数值(必须是一个大数字,可能是双精度数或浮点数),加上“.txt”文本扩展名。这将是一个与 myfile.open 兼容的字符指针或数组。有任何想法吗?只要我得到相同的最终结果,我愿意改变这个过程。

【问题讨论】:

  • 你考虑过字符串吗?
  • 我还应该提到,每当我尝试在 myfile.open() 中使用字符串而不是 char* 或 char[] 时,编译器都会出现错误,指出您无法在字符串和 const char。

标签: c++ variables text char


【解决方案1】:

你应该考虑string而不是char*作为你的文件名,因为C++11允许这两种类型:

string myfilename="test"; 
myfile.open(myfilename+".txt");
myfile << "hello";
myfile.close();

要创建更复杂的文件名,您可以考虑使用stringstreams:您可以使用来自 atting 函数/运算符的通常输出轻松组合和格式化文件名,并将其转换为字符串。

stringstream nn;
int counter=0; 
nn<<myfilename<<counter<<".txt";
myfile.open(nn.str());
...

【讨论】:

  • 我之前尝试过使用字符串,但是在让它工作时遇到了问题,似乎我错过了一些语法。所以我尝试了你的代码:stringstream nn; int counter=0; string myfilename; nn&lt;&lt;myfilename&lt;&lt;counter&lt;&lt;".txt"; ofstream myfile; myfile.open(nn.str()); myfile &lt;&lt; "hello"; myfile.close(); 但我收到一个错误:错误:没有匹配函数调用 'std::basic_ofstream::open(std::basic_stringstream::__string_type)' 错误是解决 myfile.open 行。
  • 发现问题,必须使用 .c_str() 而不是 .str()。但是这个版本只适用于字符串,所以我只需要找到一种将stringstreams转换为strings的方法,或者找到一种将numbers转换为strings而不使用stringstreams的方法。
  • 找到了将 .str() 应用于字符串流和所有工作的解决方法,请回复!
  • 我可以想象一些头文件丢失了,因为我编译这段代码没有问题(参见online demo)。很高兴看到它终于有所帮助 :-) 一个建议:如果您遇到字符串问题,您必须来解决它们,因为如果您想编写良好且可靠的 C++ 代码,它确实是必需的。
猜你喜欢
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2016-10-26
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多