вот часть из моего кода
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.
Проблема в том, что вы извлекаете строки, которые по умолчанию будут извлекаться до следующего пробела. Итак, на первой итерации, 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
,
Вы можете использовать методы из 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);
Используйте этот метод istream, чтобы получить целую строку вместо одного «слова»:
http://www.cplusplus.com/reference/istream/istream/getline/
Затем используйте strstr, чтобы найти расположение строки (например, Julia) в строке (строка файла):