C ++, как читать только несколько строк из файла

Я пытаюсь прочитать только 10 или 100 строк из моего файла. Есть ли способ, которым я могу прочитать определенную строку, как это?

-4

Решение

Читать не замужем строка из файла, используйте:

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);

Все это доступно в хороших учебниках или хороший онлайн-справочник.

1

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

Других решений пока нет …

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