我已經看過二進制讀取和寫入對象的c + +但有一些問題。它「工作」,但另外我得到了錯誤/「信息」的巨大輸出。二進制讀/寫運行時失敗
我所做的是
Person p2;
std::fstream file;
file.open(filename.c_str(), std::ios::in | std::ios::out | std::ios::binary);
file.seekg(0, std::ios::beg);
file.read ((char*)&p2, sizeof(p2));
file.close();
std::cout << "Name: " << p2.name;
人是含string name
和int age
一個簡單的結構。當我運行程序時,輸出「Name:Bob」,因爲我已經創建了一個寫入文件的程序(所以對象已經在文件名中)。
除了輸出也輸出名稱:
* glibc的檢測*方案:雙免費OG腐敗(fastttop):***
回溯:
...
存儲器映射:
...
中止
不要重新鍵入代碼,它可以引入錯誤。 __Cut和Paste__代碼。對象的二進制讀取/寫入僅在結構不包含指針時纔有效。此規則必須遞歸應用於所有成員。因此,如果任何成員或成員成員或成員成員是一個指針,這將打破。如果沒有關於人的更多信息,很難說它是否真的有效。 – 2010-03-04 13:50:51
向我們展示Person的聲明。 – 2010-03-04 13:56:25
請記住,允許編譯器在結構,類和聯合中的字段之間插入填充。另一個問題是,字符串通常必須爲它們分配空間,讀入該空間,然後分配給結構,*除非文本字段是固定大小*。 – 2010-03-04 17:27:01