格式化字符串c++

Format strings c++

本文关键字:c++ 字符串 格式化      更新时间:2023-10-16

我是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;
}

这里有几个选择:

  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();
    

使用字符串流可能有帮助:

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