2016-10-11 3 views
0

Я ищу stackoverflow для ответа, но не могу получить близкое совпадение. Я сериализую содержимое диска. Я использую boost :: fileystem :: путь для манипуляции. Какова должна быть максимальная (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

@ пользователь4581301: ОС Windows. Я использую std :: string, но для сериализации предпочитаю использовать POD, чтобы избежать мусора. – ark1974

+0

Максимальный путь к Windows - 260, если вы не используете Unicode API. Тогда это 32767. Не уверен, что использует Boost, но всегда выделяя 32k, кажется, что это была ставка для меня. – user4581301

ответ

2

Максимальный путь к Windows - 260, если вы не используете Unicode API. Тогда это 32767. Source MSDN Не знаете, что использует Boost, но вы не хотите всегда хранить 32k, чтобы быть уверенным. Есть времена, чтобы наносить удары с орбиты. Это не один из них.

Чтобы сделать строку переменной длины, я обычно иду в стиле Pascal и записываю длину строки в файл, а затем записываю строку, но это для двоичных файлов. Для текстового файла, как предложено operator<< в вопросе, вам лучше использовать разделитель, например, кавычки и std::getline.

Смежные вопросы