2016-10-11 211 views
0

的系列化最大字符長度我搜索計算器的答案,但不能讓一場勢均力敵的比賽。我正在序列化驅動器的內容。我正在使用boost :: filesystem :: path進行操作。什麼應該是最大(300只是標稱)字符長度存儲路徑信息在Windows操作系統。的文件夾路徑

struct raw_event 
{ 
    friend std::ifstream& operator >> (std::ifstream& infile, raw_event& raw); 
    friend std::ofstream& operator << (std::ofstream& outfile, raw_event& raw); 
private: 

     char path_[300]; 
     // 
}; 
+0

什麼操作系統正在有針對性的?爲什麼不使用'std :: string'? – user4581301

+0

@ user4581301:Windows操作系統。我使用的std :: string但是對於系列化喜歡使用POD以避免垃圾 – ark1974

+0

的Windows最大路徑爲260,除非你使用Unicode API。然後它是32767.不知道什麼Boost使用,但總是分配32k似乎像一個吸盤賭我。 – user4581301

回答

2

除非您使用Unicode API,否則Windows的最大路徑爲260。然後它是32767. Source MSDN不知道Boost使用什麼,但你不想永遠存儲32k只是爲了確保。有時候可以從軌道上將這個站點摧毀。這不是其中之一。

做一個可變長度的字符串,我通常去帕斯卡爾風格和寫入字符串到文件的長度,然後寫入字符串,但這是二進制文件。對於文本文件,由operator<<在問題的建議,你最好使用像報價和std::getline的分隔符。