在文件名中插入int变量[重复]

Posted

技术标签:

【中文标题】在文件名中插入int变量[重复]【英文标题】:inserting int variable in file name [duplicate] 【发布时间】:2012-07-11 08:51:28 【问题描述】:

可能重复:Easiest way to convert int to string in C++

如何在创建 .vtk 文件时插入 int 变量?我想在每 k 步创建文件。 也就是说,应该有一系列文件,从 file_no_1.vtk, file_no_2.vtk, ... 到 file_no_49.vtk 。

while(k<50)
  ifstream myfile;

  myfile.open("file_no_.vtk");

  myfile.close();

  k++;

【问题讨论】:

复制所有How to convert int to string? 问题。请注意,C++11 中有一个 std::to_string 函数。 【参考方案1】:

像这样:

char fn [100];
snprintf (fn, sizeof fn, "file_no_%02d.vtk", k);
myfile.open(fn);

或者,如果您不想要前导零(您的示例显示):

snprintf (fn, sizeof fn, "file_no_%d.vtk", k);

【讨论】:

+1 尽管变量名可能令人困惑 MAGIC_BUFFER_SIZE?非常不安全sprintf?您应该为自己将其发布为 C++ 答案而感到羞耻。 @DeadMG:以这种方式使用snprintf绝对不会出现问题。 @DeadMG:FTW 最简单的方法!!!! @DeadMG:您正在增加不必要的复杂性以避免容易检测到的问题。在此过程中,您正在为可维护性较差的代码体做出贡献。【参考方案2】:

在 C++11 中:

while(k<50)
  ifstream myfile("file_no_" + std::to_string(k) + ".vtk");
  // myfile << "data to write\n";
  k++;

【讨论】:

+1: std::to_string?这很整洁。 @Zeta,当我看到这里有人提到这一点和std::stoi 时,我欣喜若狂,但当我发现我的实现都没有时,我感到很沮丧>。> @chris:我记得是我提到了std::stoi,你评论了我的帖子。 :-/ @Nawaz,很可能是这样。谢谢你,至少我可以把它推荐给其他人:) 我不是第一次从 @Nawaz 那里偷走我的好主意。【参考方案3】:

使用stringstream(包括&lt;sstream&gt;):

while(k < 50)
    std::ostringstream fileNameStream("file_no_");
    fileNameStream << k << ".vtk";

    std::string fileName = fileNameStream.str();

    myfile.open(fileName.c_str());

   // things

    myfile.close();

    k++;

【讨论】:

我想指出最近有一个问题使用myfile.open (fileName.str().c_str());,引起了混乱。确保不要这样做,而是使字符串变量。

以上是关于在文件名中插入int变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Linux脚本在文件中插入新行[重复]

使用重复键更新在 MariaDB 中批量插入

在数组中随机插入数字且不重复

如何在html文件中插入节点js脚本[重复]

sql插入int类型

使用java在(.txt)文件中的特定行号处插入文本[重复]