如何逐字读取txt文件的一行[C ++]

时间:2018-08-21 16:55:27

标签: arrays string c++11 file-io

我需要逐字读取给定文件的一行。 该文件记录了不同学生的考试成绩。特别是对于任何学生来说, 行格式如下:

-名称--姓氏-

然后,第二行使用以下格式报告每次考试的成绩:

1级-2级-3 [...]级n-

我创建了一个Student类,并希望将成绩放入一个int数组中。 我知道如何逐字阅读文件,但我不知道一旦学生的成绩结束就如何停止(因为我不知道任何给定学生的成绩如何。) 我本以为要写一阵子重复声明,但我不知道情况会怎样。

有没有一种方法可以逐字逐行阅读,然后在行结束后停止阅读?

这是我到目前为止写的:

cout << "Inserisci il nome del file da analizzare: " << endl;
cin >> _filename;
fstream myfile;
myfile.open(_filename);  
if (myfile.is_open())  
{
    myfile >> _name >> _surname >> ;  //reading name and surname

}

1 个答案:

答案 0 :(得分:1)

  1. 使用std::getline阅读一行文本。
  2. 使用std::istringstream从行中读取每个令牌。

std::string line;
if ( ! std::getline(myfile, line) )
{
   // Problem reading the line.
   // Deal with error.
}
else
{
   // Read line successfully.
   std::istringstream str(line);
   std::string token;
   while ( str >> token )
   {
      // Use token.
   }
}