在文件名中插入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
(包括<sstream>
):
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变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章