Строки пропуска в станд.:: istream

Я использую станд.:: getline () для чтения строк из станд.:: istream-производный-класс, как я могу продвинуться несколько строк?

Я должен просто считать и отбросить их?

8
задан sashoalm 13 January 2015 в 10:07
поделиться

3 ответа

Изменить: Вы также можете использовать std :: istream :: ignore, см. https://stackoverflow.com/a/25012566 / 492336


Должен ли я использовать getline для определения количества строк, которые я хочу пропустить?

Нет, но, вероятно, это будет самое ясное решение для тех, кто читает ваш код. Если количество строк, которые вы пропускаете, велико, вы можете повысить производительность, читая большие блоки и подсчитывая символы новой строки в каждом блоке, останавливая и перемещая файл в положение последней новой строки. Но если у вас нет проблем с производительностью, я бы просто поместил getline в цикл для количества строк, которые вы хотите пропустить.

11
ответ дан 5 December 2019 в 04:52
поделиться

Для чего это стоит:

void skip_lines(std::istream& pStream, size_t pLines)
{
    std::string s;
    for (; pLines; --pLines)
        std::getline(pStream, s);
}
7
ответ дан 5 December 2019 в 04:52
поделиться

Да, используйте std :: getline , если вы не знаете расположение новой строки.

Если по какой-то странной причине вы знаете, где появляются символы новой строки, вы можете сначала использовать ifstream :: seekg .

Вы можете читать и другими способами, например ifstream :: read , но std :: getline , вероятно, является самым простым и понятным решением.

8
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: