如何以指定格式读取C 中的多个TXT文件

how to read multiple txt files in c++ in a specified format.?

本文关键字:文件 TXT 读取 定格 格式      更新时间:2023-10-16

i在C 中有一个代码,该代码从目录中读取多个TXT文件。但是文件以指定格式,即ABC01.TXT,ABC02.TXT,ABC03.TXT .....,ABC99.TXT。

我可以以格式读取文件,abc1.txt,abc2.txt,abc3.txt .....,abc99.txt。使用我的代码。问题是我无法阅读整数值01至09。

请帮助我如何编辑代码并读取所有文件。

我的代码:

 for(files=1;files<=counter;files++)
  {   stringstream out;
      out<<files;
       infile="./input/abc"+out.str()+".txt";
              input.open(infile.c_str());
  }

这可能是一个肮脏的修复程序,但是您可以添加一个其他条件,以将文本文件ABC01处理到ABC09

 for(files=1;files<=counter;files++)
  {   stringstream out;
      out<<files;
       if(files<10){
       infile="./input/abc0"+out.str()+".txt";
       }
       else
       infile="./input/abc"+out.str()+".txt";
              input.open(infile.c_str());
  } 

您可以使用std :: sprintf格式化字符串,例如

for (int filenum=1; filenum<=counter; filenum++) {
  char nambuf[64];
  std::snprintf(nambuf, sizeof(nambuf), "./input/abc%02d.txt", filenum);
  std::ifstream infile;
  infile.open(nambuf);

我建议花更多的时间阅读C 标准库的文档。

您可以使用 std::setwstd::setfill io操纵器来确保您的电话格式至少为两个数字:

for(int file = 1; file <= counter; file++) {
    std::ostringstream filename;
    filename << "./input/abc" << std::setw(2) << std::setfill('0') << file << ".txt";
    std::ifstream input(filename.str());
}

在此处插入std::setw(2)确保格式的格式至少为两个字符,并且std::setfill('0')在格式化数字时用'0'填充任何缺失的字符。