我试图找到一种读取半大文件(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
...
答案 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
。