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


Автор: FiMa1 1.8.2007, 13:14
Всем привет!
Приведенная ниже программа должна (по Шилдту) "записывать в файл в двоичном виде введенные пользователем символы до ввода знака $". Почему пишет в файл в текстовом виде..?
Код
int main()
{
    ofstream out("bin", ios::out | ios::binary );
    if ( ! out ) {
        cout << "Unable to open the file\n";
        return 1;
    }
    
    cout << "To stop input $ char\n";

    char ch;
    do {
        cout << ": ";
        cin.get(ch);
        out.put(ch);
    } while ( ch != '$');
    out.close();
    
    return 0;
}

Автор: korbian 1.8.2007, 13:31
все нормально, пишет в бинарном виде.

Автор: bsa 1.8.2007, 13:31
А чем по-твоему отличается бинарный от текстового?
hint: собери под windows или DOS и введи не менее двух строк (т.е. знак $ введи на второй или третьей строке). Затем открой блокнотом (notepad.exe)

Автор: FiMa1 1.8.2007, 13:41
 smile  bsa, korbian, спасибо! Я почему-то думал что двоичный неформатируемый вид - это не только потеря информации о форматировании.. 

Автор: bsa 1.8.2007, 13:46
нет. понятие "двоичный" актуально только для Windows (и DOS), так как у них конец строки состоит из символов '\r' и '\n'. А в UNIX только '\n'. Поэтому в текстовом режиме происходит преобразование перед записью, а в бинарном нет.

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