У меня есть двоичный файл ( не текстовый файл), размером около 20M, и у меня есть строка, которая может существовать или не существовать в этом файле. Обычно (для текстового файла) я бы использовал getline()
, чтобы прочитать файл построчно, а затем find
для его обнаружения, что-то вроде:
bool found = false;
{
std::string stringToLookFor("string to look for");
std::ifstream ifs("myBinaryFile.bin");
std::string line;
while (!found && getline(ifs, line)) {
found = (line.find(stringToLookFor, 0) != std::string::npos);
}
ifs.close();
}
Однако я не уверен, еслиэто разумно сделать для двоичного файла. Моя главная проблема заключается в том, что «строки» для такого файла могут быть большими. Может случиться так, что весь файл 20M не содержит новых строк, так что я могу закончить чтение довольно большой строки для поиска (вполне может быть и другие проблемы с этим подходом, отсюда и мой вопрос).
Это считается жизнеспособным подходом или я могу столкнуться с проблемами? Есть ли лучший способ поиска двоичных файлов, чем обычный текстовый построчно?