格式化字符串 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::stringstream filenamebuffer;
buffer << "table" << i << ".dat";
filename = filenamebuffer.str()
这里有几个备选方案:
使用std::to_string
和字符串连接:
std::string filename = "table" + std::to_string(i) + ".dat";
-
std::ostringstream iss;
iss << "table" << i << ".dat";
std::string filename = iss.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);
//...
我是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::stringstream filenamebuffer;
buffer << "table" << i << ".dat";
filename = filenamebuffer.str()
这里有几个备选方案:
使用
std::to_string
和字符串连接:std::string filename = "table" + std::to_string(i) + ".dat";
-
std::ostringstream iss; iss << "table" << i << ".dat"; std::string filename = iss.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);
//...