Официальный сайт студ.городка НГТУ
Программирование и БД » странное поведение ofstream и ifstream 

#1  27.10.11 18:04

странное поведение ofstream и ifstream

для начала запускаем вот такую простенькую программку:


#include "stdafx.h"
#include <fstream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    ofstream of("of.txt");
    for ( int i = 0; i < 256; ++i )
    {
        of << (char)i;
    };
    of.close();
    return 0;
}
и на выходе получим файл of.txt в котором будет следующее:
   

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя

а теперь запустим вот такую программку:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    ifstream in("of.txt");
    ofstream of("in.txt");

    char ch;
    for ( int i = 0; i < 256; ++i )
    {
        in >> ch;
        of << ch;
        cout << ch;
    };
    of.close();
    in.close();
    system("pause");
    return 0;
}


и получим на экране и в выходном файле какую-то фигню.
вопрос: почему после символа с номером 26 из файла уже считывается какая-то чушь и как от этого избавиться?

Offline

#2  27.10.11 21:25

$up
Профиль

Re: странное поведение ofstream и ifstream

потому что до 32 символа символы являются управляющими, поэтому символ с кодом 25 говорит что файл кончился.
Надо файл в бинарном режиме открывать

Исправлено $up (27.10.11 21:48)

Offline

#3  27.10.11 22:30

Re: странное поведение ofstream и ifstream

Оо, спасибо. не знал даже.

Offline

Программирование и БД » странное поведение ofstream и ifstream 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.019 сек.
Выполнено 11 запросов.