格式化字符串 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()

这里有几个备选方案:

  1. 使用std::to_string和字符串连接:

    std::string filename = "table" + std::to_string(i) + ".dat";
    
  2. 使用std::ostringstream:

    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);
//...