2016-10-11 212 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的分隔符。