Строка в текстовом файле, содержащая строку в переполнении стека

вот часть из моего кода

string word;
cin >> word;
string keyword;
while (file >> keyword && keyword != word){}

Он ищет слово в файле, и если он находит это слово (ключевое слово), он начинает строку оттуда позже. Это работает отлично в данный момент. Моя проблема в том, что когда линия

"Julia","2 Om.","KA","1 Om. 4:2"

если я введу слово Джулия, я не смогу найти его и использовать в своих целях (только к вашему сведению, я считаю это). Это работает, если я ищу «Джулия», «2, так как это место, где приходит пространство.

Я хотел бы знать, как я могу изменить линию

while (file >> keyword && keyword != word){}

так что я могу видеть, когда текст / строка СОДЕРЖИТ эту строку, поскольку в данный момент она только находит и принимает ее, если я в совершенстве введу ВЕСЬ строку.

РЕДАКТИРОВАТЬ: Также то, что я нашел это далеко, это только strstr, strtok, strcmp. Но они больше подходят для printf, чем для cout.

0

Решение

Проблема в том, что вы извлекаете строки, которые по умолчанию будут извлекаться до следующего пробела. Итак, на первой итерации, keyword является "Julia","2, Если вы хотите извлечь все разделенные запятыми, я предлагаю использовать std::getline с , в качестве разделителя:

while (std::getline(file, keyword, ','))

Это будет просматривать все цитируемые строки. Теперь вы можете использовать std::string::find определить, если вход word находится внутри этой строки в кавычках:

while (std::getline(file, keyword, ',') &&
keyword.find(word) == std::string::npos)

Теперь это будет перебирать каждую строку в кавычках, пока не дойдет до той, которая содержит word,

1

Другие решения

Вы можете использовать методы из std :: string как find,

#include <string>
#include <iostream>
// ...
std::string keyword;
std::string word;

getline(file, keyword);
do
{
std::cin >> word;
}
while (keyword.find(word) == std::string::npos);
3

Используйте этот метод istream, чтобы получить целую строку вместо одного «слова»:

http://www.cplusplus.com/reference/istream/istream/getline/

Затем используйте strstr, чтобы найти расположение строки (например, Julia) в строке (строка файла):

http://www.cplusplus.com/reference/cstring/strstr/

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector