如何在C ++中动态生成具有序号的文件名

时间:2018-08-20 10:17:23

标签: c++ file

我想生成文件名中具有序号且宽度相同(后缀零)的数字的文件,如文件名应如下生成: File_001.txt File_002.txt ..... File_020.txt

`

int main()
{
for(int i=1; i<=20; i++)
{
std::string file = "File_"+std::to_string(i)+".txt";
}
}

`

使用上述代码,生成的文件名为:File_1.txt ...... File_20.txt

但是我想生成如上所述的文件名

2 个答案:

答案 0 :(得分:0)

您需要使用std::setfillstd::setw。检查此示例:

#include <iomanip>
#include <iostream>

int main(){    
        for(int i = 0; i < 100; ++i){
                std::stringstream ss;
                ss << std::setfill('0') << std::setw(3);
                ss << i;
                std::string my_filename = ss.str();
                std::cout << my_filename << std::endl;
        }
}

答案 1 :(得分:0)

使用字符串流。使用stringstream可以输出到字符串,然后使用常规的I / O操纵器可以添加前导零。

#include <sstream>
#include <imanip>

int main()
{
    for (int i=1; i<=20; i++)
    {
        std::stringstring buffer;
        buffer << "File_" << std::setfill('0') << std::setw(3) << i << ".txt";
        std::string file = buffer.str();
        ...
    }
}