Сохранение данных в двоичный файл, какой метод правильный? - PullRequest
0 голосов
/ 06 августа 2020

Я хочу сохранить строку в двоичном файле, что правильно?

std::ofstream outfile(filename, std::ios_base::binary);


string str="some text";
for (const char &i : str) {
            outfile.write((const char *) &i, sizeof(char));
        }

или:

outfile.write((const char *) &str, str.length()*sizeof(char));

Примечание: I не хочу сохранять нулевой терминатор в конце строки.

1 Ответ

1 голос
/ 06 августа 2020

IMHO, правильный метод - сначала записать длину строки, а затем ее содержимое:

const std::string example_text = "Redwood trees are very tall.";
const unsigned int length = example_text.length();
outfile.write((char *) &length, sizeof(length));
outfile.write(example_text.data(), length);

Это позволяет использовать чтение блока:

unsigned int length;
outfile.read((char *) &length, sizeof(length));
std::string text;
text.reserve(length);
outfile.read(text.data(), length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...