格式化字符串c++
Format strings c++
我是c++的新手,不知道如何在每次循环运行时设置不同的文件名。我想在每次循环运行时创建一个新文件,当然我必须给它们取不同的文件名。否则,同一个文件只是在更新。在Python中,可以通过
轻松完成for i in range(10):
filename = "myfile%f.dat" % i
,但我在c++中找不到类似的语法。我希望有人能帮助我,我做了一个示例脚本下面(与Python语法的格式字符串),希望使它更清楚我想做什么。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
for(int i = 1; i < 11; i += 1)
{
string filename; filename = "table%d.dat"%i;
ofstream infile;
infile.open( filename.c_str());
infile << "multiplication table for " << i << endl;
for(int j = 1; j < 11; j+=1)
{
infile << j*i << endl;
}
infile.close();
}
return 0;
}
这里有几个选择:
-
使用
std::to_string
和字符串连接:std::string filename = "table" + std::to_string(i) + ".dat";
-
使用
std::ostringstream
:std::ostringstream iss; iss << "table" << i << ".dat"; std::string filename = iss.str();
使用字符串流可能有帮助:
std::stringstream filenamebuffer;
buffer << "table" << i << ".dat";
filename = filenamebuffer.str()
尝试_snprintf_s。https://msdn.microsoft.com/en-us/library/f30dzcf6.aspx
//...
char buffer[20];
if(_snprintf(buffer, 20, 20, "table%d.dat", i);
infile.open(buffer);
//...