Если вы останетесь с этим маршрутом, я бы записал длину строки, а не ноль, заканчивая ее.Проще выделить на загрузку.Есть много для рассмотрения в двоичном формате.Каждое поле должно иметь определенный тип идентификатора, чтобы его можно было найти в неправильном месте или в другой версии вашей программы.Также в начале вашего файла напишите, какой порядок байтов вы используете, а также размер целых чисел и т. Д. Или определите стандартный размер и порядок байтов для всего.Я все время пишу такой код для работы в сети и хранения файлов.Есть гораздо лучшие современные подходы.Также рассмотрите возможность использования буфера и создания функции Serialize ().
Хорошие современные альтернативы включают: SQLite3, XML, JSON
Непроверенный пример:
class object
{
Load()
{
ifstream inFile;
int size;
inFile.open("filename", ios::binary);
inFile.read(&size, 4);
stringA.resize(size);
inFile.read(&stringA[0], size);
inFile.read(&size, 4);
stringB.resize(size);
inFile.read(&stringB[0], size);
inFile.close(); //don't forget to close your files
}
Save()
{
ofstream outFile;
int size;
outFile.open("filename", ios::binary);
size = stringA.size();
outFile.write(&size, 4);
outFile.write(&stringA[0], size);
size = stringB.size();
outFile.write(&size, 4);
outFile.write(&stringA[0], size);
outFile.close();
}
private:
std::string stringA
std::string stringB
};