Предположим, что мы пишем объект в двоичном следующим образом:Выполняет ли функция записи сериализацию объекта с использованием ASCII в C++?
file.write((char*) &object, sizeof(object))
Пусть объект имеет личные данные члены символьных массивов и целых типов (не std::string
)
Вопрос: Пишет ли функция write
объекта атрибуты для ASCII? В частности, являются ли переменные частного члена объекта, написанные как ASCII? Может ли кто-нибудь точно указать, что делает эта функция?
Он просто выплевывает байты. Эти байты могут соответствовать кодировке ascii. Или они этого не делают, мир не говорит ascii или указатель. Может быть, вы можете их правильно прочитать. Или нет, зависит, не отправляйте его слишком далеко. –
Это 'write' будет выписывать все данные, содержащиеся в' object', включая указатели на виртуальные таблицы. Кроме того, вы можете легко попробовать это, а затем посмотреть на полученный файл в шестнадцатеричном дампе, чтобы увидеть, что на самом деле написано. –
О, и я должен подчеркнуть, что точка, о которой написано указатель виртуальной таблицы, важна, потому что это означает, что вы никогда не сможете действительно прочитать объект, используя простой один вызов 'read' (соответствующий простому одиночному вызову' write', напишите объект). Правильная, работая сериализация непросто, используйте существующую библиотеку для ее обработки и всех сумасшедших угловых шкафов. –