Как получить определенное слово в строке getline?

#c

#c

Вопрос:

Как кто-то может получить только определенное слово в строке метода getline? Например:

Test.txt:

  hi guys
 im @@Paul tt [GET THIS]
  

 string line;
string word;
ifstream file ("test.txt");

if (file.is_open()) {
    while (getline(file, line)) {
        if (line.find("@@Paul") != string::npos) {
            strcpy(word, line.c_str());
        }
    }
}
  

Как я могу закодировать его так, чтобы, когда я обнаружу, что @@Paul оно принимает только символы ( [GET THIS] ) после двойной табуляции ( tt )?

Комментарии:

1. Используйте std::istringstream и сканируйте это, чтобы упростить себе жизнь.

2. strcpy(word, line.c_str()); это неудобно.

3. strcpy со строкой в качестве dest? сколько предупреждений это генерирует?

Ответ №1:

это определение функции getline: istreamamp; getline (istreamamp; is, строка amp; str, разделитель символов);

Delim — это разделитель, который останавливает getline от чтения потока после данного символа. итак, вы можете сделать что-то вроде этого:

 string trash;
string properline;

getline(file, trash, 't');
getline(file, trash, 't'); //second tab, still trash
getline(file, properline);