C ++读取大文件并将其保存为字符串并删除特定的随机词

时间:2018-07-30 19:43:29

标签: c++

我试图找到一种读取半大文件(130 MB)并将其快速保存到字符串中并删除字符串中所有随机单词的方法,如下所示:

File.txt:
0x0239183 (10): Hello
0x0039123 (1): Test
...

程序唯一要用的单词是2分之后的一个单词,例如不计算空格(在这种情况下为“ Hello”和“ Test”)。

我尝试了以下代码:

fstream f(legitfiles.c_str(), fstream::in );
string s;
while(getline( f, s, '\0')){
    size_t space_pos = s.find(" ");    
    if (space_pos != std::string::npos) {
        s = s.substr(space_pos + 1);
    }
}
cout << s << endl;
f.close();

但是当我启动程序时,唯一要删除的单词是第一行的第一行。

Output File.txt:
 (10): Hello
0x0039123 (1): Test
...

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

while(getline(f, s)){
    size_t space_pos = s.rfind(" ") + 1;

    cout << s.substr(space_pos) << endl;
}

请注意,对std::getline的调用依赖于其默认的定界符,而用于查找从中分割子字符串的正确位置的std::string方法是std::string::rfind