Я пытаюсь прочитать только 10 или 100 строк из моего файла. Есть ли способ, которым я могу прочитать определенную строку, как это?
Читать не замужем строка из файла, используйте:
std::string text_from_file;
std::getline(text_file_stream, text_from_file);
В C ++, чтобы выполнить действие много раз, мы используем цикл. Таким образом, чтобы прочитать 10 строк из файла, мы бы использовали for
цикл:
for (unsigned int i = 0U; i < 10U; ++i)
{
std::getline(text_file_stream, text_from_file);
}
Другой метод:
unsigned int lines_read = 0U;
while ((lines_read < 10) && (std::getline(text_file_stream, text_from_file)))
{
++lines_read;
}
Чтобы прочитать 100 строк, вы должны изменить константу с 10 на 100.
Пропуск линий
Основная проблема с пропуском строк или поиском по заданной строке заключается в том, что текстовый файл имеет записи переменной длины. Вам нужно будет прочитать каждую строку, чтобы понять, где начинается следующая.
Таким образом, техника пропуска строк заключается в чтении строки в текстовую переменную и ее игнорировании, так же как и в приведенных выше примерах.
Существуют методы для ускорения этого, но они включают чтение больших блоков данных в память или обработку файла как памяти (например, отображение памяти). Одной из проблем этого метода является обработка случая, когда текстовая строка, которую вы хотите, пересекает конец буфера (она не полностью в буфере). Эти методы можно найти в других сообщениях на StackOverflow или в Интернете.
Чтение до разделителя
ограничитель это то, что указывает на конец текста. Стандартный разделитель для текстовых файлов — это новая строка. Вы можете читать текст до запятой, табуляции или другого разделителя, используя третий параметр std::getline
,
const char delimiter = '.';
std::string text_from_file;
std::getline(text_data_stream, text_from_file, delimiter);
Все это доступно в хороших учебниках или хороший онлайн-справочник.
Других решений пока нет …