Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > 2 байта как переход на новую строку


Автор: vasmt 9.10.2008, 16:49
Пишу примерно следующее:

#include <iostream>
#include <fstream>
using namespace std;

void main()
{
    ofstream out("c:\\mytest", ios_base::out);
    out << "fd\n";
}

Открываю файл c:\\mytest hex-редактором, и вижу, что для перехода на новую строку используется 2 байта: OD OA
Почему образуется два байта? Ведь по идее символ '\n' занимает один байт.
Как можно избавиться от этого?

Автор: SABROG 9.10.2008, 18:29
Компилятор ?

Скорее всего MSVC. В gcc такого нету.

В общем используй binary mode вместо text mode:

Код

#include <iostream>
#include <fstream>
using namespace std;

void main()
{
    ofstream out("c:\\mytest", ios_base::binary);
    out << "fd\n";
}

Автор: mes 10.10.2008, 09:29
Цитата(vasmt @  9.10.2008,  16:49 Найти цитируемый пост)
что для перехода на новую строку используется 2 байта: OD OA

(это историческое явление, которое берет начало с дос)
последовательность OD OA (\n\r ) в винде используются чтоб был единообразный вывод на терминал независимо  консоль это  или  принтер.
Но для вывода просто на консоль достаточно только \n.

\n - соответствует символу перевода строки (LF). 
\r- соответствует символу возврата каретки (CR). 



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)