Предположим, мы прочитали содержимое текстового файла в stringstream
через
std::ifstream file(filepath);
std::stringstream ss;
ss << file.rdbuf();
и теперь хотите обработать файл построчно. Это можно сделать через
for (std::string line; std::getline(ss, line);)
{
}
Однако, учитывая, что ss
содержит все содержимое файла во внутреннем буфере (и что мы можем получить это содержимое как string
через ss.str()
), приведенный выше код крайне неэффективен. Для каждой строки файла выполняется выделение памяти и операция копирования.
Можно ли придумать решение, которое предоставляет line
s в форме std::string_view
? (Вы можете использовать другой механизм для загрузки всего файла; мне не нужен доступ к нему через stringstream
.)
man 2 mmap
. (с приведенным примером C) - person David C. Rankin   schedule 07.04.2018line
только один раз, а затем повторно используете ее. В чем проблема? - person Bo Persson   schedule 07.04.2018