首页 > 解决方案 > 如何在c ++中有效地从文件中拆分每一行

问题描述

我想处理文件的每一行,然后用分隔符拆分它并获取例如第一个和第三个令牌。

在蟒蛇中,

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|并获取令牌?我试图getline(myStr, token, '|')再次在 while 循环内调用,但它似乎不起作用。有人可以帮忙吗?

谢谢

标签: pythonc++splitgetlinestringstream

解决方案


更新:只需要前三到四个令牌

在你的 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)

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

vector<int> tokens;

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


推荐阅读