В связи с тем, что в разных ОС перевод строки происходит разным образом (\r\n в вин, а также \n или \r в других ОС), каким образом лучше всего будет осуществлять кросс-платформенность, например, для файлов? Просто писать \r\n постоянно вместо \n или \r, да?
А как быть с std::endl тогда? Что он делает в данном случае — \r\n или как?
Здравствуйте, YourLastSong, Вы писали:
YLS>В связи с тем, что в разных ОС перевод строки происходит разным образом (\r\n в вин, а также \n или \r в других ОС), каким образом лучше всего будет осуществлять кросс-платформенность, например, для файлов? Просто писать \r\n постоянно вместо \n или \r, да?
YLS>А как быть с std::endl тогда? Что он делает в данном случае — \r\n или как?
Вот это и делает — пишет, что надо, в зависимости от системы.
Здравствуйте, YourLastSong, Вы писали:
YLS>В связи с тем, что в разных ОС перевод строки происходит разным образом (\r\n в вин, а также \n или \r в других ОС), каким образом лучше всего будет осуществлять кросс-платформенность, например, для файлов? Просто писать \r\n постоянно вместо \n или \r, да?
Открываешь файл или поток в текстовом режиме, пишешь в него всегда \n, стандартная библиотека прозрачно транслирует в то, чем принято разделять строки на данной системе.
YLS>А как быть с std::endl тогда? Что он делает в данном случае — \r\n или как?
std::endl пишет в поток \n. Стандартная библиотека прозрачно транслирует его в то, чем принято разделять строки на данной системе.
On 11.09.2011 21:06, Pzz wrote:
> YLS>А как быть с std::endl тогда? Что он делает в данном случае — \r\n или как? > > Вот это и делает — пишет, что надо, в зависимости от системы.
Делает он другое. std::endl пишет конец строки в поток и flush-ит его.
А символ конца строки выводить кроссплатформенно очень просто:
fprintf( file, "\n" );
или
std::cout << "\n" ;
Если поток ТЕКСТОВЫЙ, CRT сама позаботится о том, как физически вывести конец
строки на даной платформе.
Текстовость потока задаётся при открытии (возможно, можно поменять режим и позже).
MZ>CRT сама позаботится о том, как физически вывести конец MZ>строки на даной платформе.
Но ведь это же в том случае, если я создаю этот файл через программу? Мне интересно также, как откр. файл на другой ОС, если я при этом создавал файл, например в вин заранее?
Не морочишь голову, большинство source-safe систем и ssh имею автоматическую конвертацию в зависимости от целевой платформы...
Так то не нужно заморачиваться.
On 12.09.2011 0:25, YourLastSong wrote:
> MZ>CRT сама позаботится о том, как физически вывести конец > MZ>строки на даной платформе. > > Но ведь это же в том случае, если я создаю этот файл через программу? Мне
Не важно кто создаёт файл, важно, кто его открывает. Это режим работы открытого
файла, ты его можешь задавать.
> интересно также, как откр. файл на другой ОС, если я при этом создавал файл, > например в вин заранее?
Да так же.
На самом деле то, о чём ты говоришь, это даже не принадлежность
какой-то операционки. Это формат работы конкретных программ.
Некоторые работают так, некоторые -- по-другому, а хорошие
понимают и так, и так. Есть конечно общяя традиция на какой-то
операционке, но это лишь традиция, её часто нарушают.