如何在c++中有效地从文件中分割每一行



我想处理文件的每一行,然后用分隔符将其分割,并获得例如第一个和第三个标记。

在python中,

with open("filename.txt") as f:
for line in f:
tokens = line.split("|")
print(tokens[0], tokens[2])

所以,cpp,我可以用getline读取文件的行。像这样:

ifstream fin(f);
string myStr;
while( getline(fin, myStr)){
}

现在,如何用|拆分myStr并获得代币?我再次尝试在while循环中调用getline(myStr, token, '|'),但似乎不起作用。有人能帮忙吗?

感谢

更新:只需要前三到四个代币

在你的while循环中试试这个:

size_t pos = 0;
vector<std::string> tokens;
while ((pos = myStr.find("|")) != std::string::npos) {
tokens.push_back(myStr.substr(0, pos));
myStr.erase(0, pos + delimiter.length());
if(tokens.size() == 4){
break;
}
}
tokens.push_back(myStr)

并在while循环外部和之前初始化tokens

vector<int> tokens;

此问题答案的修改版本:使用字符串分隔符(标准C++(在C++中分析(拆分(字符串