使用分隔符从文本文件读取

时间:2019-05-23 10:44:58

标签: c++ text-files delimiter

我有一个带有学生索引的文本文件,看起来像这样:

Anna Baker
Class 1B
Long description text about the student lorem ipsum dolor sit amet, consetetur sadipscing elitr.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.
Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet.
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
#####
Rick Bell
Class 2A
Long description text about the student lorem ipsum dolor sit amet.
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor.
#####
etc.

我有一个学生类,我需要从文本文件中提取信息并将其放在学生对象中。

class Student{
private:
  string name;
  string class;
  string description;
}

到目前为止,名称和类工作正常,但是我在提取描述文本方面很挣扎。 “ #####”用作分隔符。我使用:

while (???){
   getline(inFile, word3);
   word3=word3.substr(0,word3.find(delimiter));
}

我需要一个while循环来读取所有到定界符的行,但我找不到正确的语句。你能帮我吗?

2 个答案:

答案 0 :(得分:0)

快速查看cpp reference表示std :: string :: find的返回值在不存在时为std :: string :: npos。因此,您可以使用

之类的东西
bool continue = true;
while (continue)
{
   getline(inFile, word3);
   continue = word3.find(delimiter)) == std::string::npos;
 //do something else
}

答案 1 :(得分:0)

您可以使用ifstream来读取文件,

std::ifstream student_file("file.txt");

您可以使用逐行读取文件,

string info;
if(student_file.is_open()){
   while( getline(student_file, info) ) {
        if( info == "####")
           continue;
        else {
                //this is student info
        }
   }
}