Если вы загружаете весь файл в строку, вы, вероятно, можете использовать метод, описанный в этом вопросе .Таким образом, вы можете получить размер файла в байтах и выделить свою строку для его хранения (не забудьте дополнительный байт для нулевого символа).
Однако, если вы динамически увеличиваете строку, лучше увеличить ее размер на некоторый коэффициент, превышающий один байт (перераспределение строки для каждого байта будет очень медленным, особенно если строка должнабыть выделены в новой области памяти, а затем скопированы).Поскольку вы читаете удвоение файла, это, вероятно, очень разумно.Я видел, как люди используют и другие методы, например:
Я видел, как люди округляются до следующей степени 2, например, 2, 4, 8,затем 16 байтов.(который, по сути, удваивает размер файла каждый раз).
Я также видел, как люди используют значение, которое больше подходит для строк, которые они намереваются прочитать, т.е.100 байтов за раз.
Если вы перераспределяете строку, вы всегда можете вернуть эту память в конце с окончательным перераспределением до нужного вам размера.