Что такое эффективный, правильный способ чтения в файле данных со смешанными символами? Например, у меня есть файл данных, который содержит смесь данных, загруженных из других файлов, 32-разрядных целых чисел, символов и строк. В настоящее время я использую объект fstream, но он останавливается после попадания в int32 или конец строки. если я добавляю случайные данные в конец строки в файле данных, кажется, что он завершается с остальной частью файла. Это приводит меня к мысли, что нулевое завершение, добавленное к строкам, портит его. Вот пример загрузки в файл:
void main()
{
fstream fin("C://mark.dat", ios::in|ios::binary|ios::ate);
char *mymemory = 0;
int size;
size = 0;
if (fin.is_open())
{
size = static_cast<int>(fin.tellg());
mymemory = new char[static_cast<int>(size+1)];
memset(mymemory, 0, static_cast<int>(size + 1));
fin.seekg(0, ios::beg);
fin.read(mymemory, size);
fin.close();
printf(mymemory);
std::string hithere;
hithere = cin.get();
}
}
Почему этот код может остановиться после чтения целого числа или строки? Как можно обойти это? Это неправильный подход при работе с файлами такого типа? Должен ли я использовать fstream вообще?