Мне нужно работать с двоичными файлами в программе, и я видел, как использовался reinterpret_cast, а также c_str ().
Вот фрагмент кода с использованием c_str ():
fstream aFile;
string sample = "hello this is a line of code";
aFile.open("newFile.bin", ios::out | ios::binary);
aFile.write(sample.c_str(), sample.size());
aFile.close();
Вот фрагмент кода с использованием reinterpret_cast:
fstream aFile_2;
string sample_2 = "hello this is a line of code";
aFile_2.open("newFile_2.bin", ios::out | ios::binary);
aFile_2.write(reinterpret_cast<char *>(&sample_2), sizeof(sample_2));
aFile_2.close();
И когда я пишу в двоичный файлкоторый использовал reinterpret_cast, я получаю тарабарщину ... Когда я читаю данные обратно в мою программу, это имеет смысл.Однако когда я использую c_str (), данные имеют смысл в файле, в который я их записал (без тарабарщины).
И, после использования c_str () для записи в файл, я могу легко получить данные, используяgetline or >>:
string result = "";
aFile.open("newFile.bin", ios::in | ios::binary);
//aFile >> result;
getline(aFile, result);
cout << "result = " << result << endl;
aFile.close();
Итак, мои вопросы: что лучше использовать для двоичных файлов: reinterpret_cast или c_str ()?И почему?
Лично мне кажется, что c_str () лучше ...
Спасибо всем:)