Я новичок в C ++, поэтому, пожалуйста, поймите ...
Я хочу найти строку (иглу) в файле (стоге сена), читая каждую строку отдельно, затем ищаигла в этой линии.Тем не менее, в идеале для более надежного кода я хотел бы иметь возможность просто читать отдельные слова в строке, чтобы при наличии больших (то есть нескольких) пробелов между словами они игнорировались при поиске стрелки.(например, возможно, используя оператор >> ??) То есть строка иглы не должна точно соответствовать размеру пространства между словами в файле.
, например, если у меня есть игла:
"The quick brown fox jumps over the lazy dog"
в файле это может быть записано (в определенной строке) как:
... "The quick brown fox jumps over the lazy dog" ...
Есть ли эффективный способ сделать это?
В настоящее время явключите необходимое количество пробелов в моей строке иглы, но я хотел бы улучшить код, если это возможно.
Мой код в настоящее время выглядит примерно так (внутри метода в классе):
double var1, var2;
char skip[5];
std::fstream haystack ("filename");
std::string needle = "This is a string, and var1 =";
std::string line;
int pos;
bool found = false;
// Search for needle
while ( !found && getline (haystack,line) ) {
pos = line.find(needle); // find position of needle in current line
if (pos != std::string::npos) { // current line contains needle
std::stringstream lineStream(line);
lineStream.seekg (pos + needle.length());
lineStream >> var1;
lineStream >> skip;
lineStream >> var2;
found = true;
}
}
(Просто для ясности, после нахождения строки (иглы) я хочу сохранить следующее слово в этой строке или в некоторых случаях сохранить следующее слово, затем пропустить слово и сохранить следующее слово, например:
С файлом:
... ...
... This is a string, and var1 = 111 and 777 ...
... ...
Я хочу извлечь var1 = 111; var2 = 777;
)
Заранее спасибо за любую помощь!