std有个函数叫做getline,它的作用是从输入文件中读取每一行,并且将该行存入一个字符串中,每一行用换行符(\n)识别。

它的原型是,

istream& getline (istream& is, string& str);

如果想遍历某个输入文本文件,可以写如下代码:

#include <fstream>
#include <string>
#include <iostream>
using namespace std;

ifstream input_file("input.txt");
string single_line;
while(getline(input_file, single_line)) {
    cout << single_line << endl;
}

当遇到文件结尾时,该函数自动停止提取字符串,则相应的while循环条件判断为假,跳出循环。


下一步是挑出那些符合一定模式的行,比方说挑出所有包含一个子串的行。这时,要用到string类的find函数。

if(single_line.find("node id") != string::npos){
    //perform operations
}