Итак, у меня есть кусок кода, который работает довольно хорошо. Цель состояла в том, чтобы отфильтровать мой чат - историю чата. Первым делом я хотел отсортировать так, чтобы сортировались только мои сообщения, начинающиеся с «Бен: ...», а остальные отбрасывались.
Мне это удалось, но только из-за странной особенности, которую я не могу понять. Из-за некоторых более старых попыток в моем коде есть команда стирания, которая пока не имеет реальной цели. И все же без этого мой цикл while продолжает бесконечно повторяться.
Почему команда стирания помогает мне завершить цикл?
Я попытался удалить его и поиграл с другими идеями. Ничего не сработало.
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
string text;
string deli = "Ben:";
string token;
size_t pos = 0;
ifstream myfile;
myfile.open("WAEZ.txt");
while( getline(myfile, text)){
while((pos = text.find(deli)) != std::string::npos){
token = text.substr(pos,std::string::npos);
cout << token << endl;
text.erase(0, pos + deli.length());
}
}
}
Я бы хотел, чтобы этот код работал без команды стирания, которую я не использую.