Я делаю что-то очень простое: разбивая весь текстовый файл с диска на std::string
. Мой текущий код в основном делает это:
std::ifstream f(filename);
return std::string(std::istreambuf_iterator<char>(f), std::istreambuf_iterator<char>());
Очень маловероятно, что это когда-либо будет иметь какое-то влияние на производительность, но мне все же стало любопытно, медленный ли это способ сделать это.
Существует ли риск того, что построение строки потребует много перераспределений? Было бы лучше (то есть быстрее) использовать seekg()
/tellg()
для вычисления размера файла и reserve()
столько места в строке перед выполнением чтения?