Форум программистов, компьютерный форум CyberForum.ru

Работа с файлами - C++

Восстановить пароль Регистрация
 
Andruchka
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
25.12.2011, 00:06     Работа с файлами #1
написал класс fail для чтения из файла

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class fail
{
    public:
        fail( int = 0, string = "" );
 
        void setNom( int nomValue );
        void setStr( string strValue );
 
        int getNom( void ) const;
        string getStr( void ) const;
 
    private:
        int nom;
        string str;
 
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fail::fail( int nomValue, string strValue )
{
    setNom( nomValue );
    setStr( strValue ); 
}
 
void fail::setNom( int nomIcqValue )
{
    nom= nomIcqValue;
}
 
void fail::setStr( string strValue )
{
    str = strValue;
}
 
int fail::getNom( void ) const
{
    return nom;
}
 
string fail::getStr( void ) const
{
    return str;
}
функция main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main( void )
{
    SetConsoleCP( 1251 );
    SetConsoleOutputCP( 1251 );
 
    fail data;
 
    newFile( );
    read( );
 
    system( "pause" );
    return 0;
}
функция newFail
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void newFile( void )
{
    int numberValue = 0;
    string strValue = "";
    fail data;
 
    ofstream noomOut( "nom.txt", ios::binary );
 
    while( cin >> numberValue >> strValue  )
    {
        data.setNom( numberValue );
        data.setStr( strValue );
 
        noomOut.write( reinterpret_cast< const char * >( &data ), sizeof( fail )  );
    }
 
    cout << "\nВвод закончен" << endl;
    noomOut.close();
}
функция read
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void read( void )
{
    fail data;
    ifstream noomInp( "nom.txt", ios::in );
 
    if( !noomInp )
        exit( 2 );
 
    noomInp.read( reinterpret_cast< char * >( &data ), sizeof( fail ) );
    
    while( !noomInp.eof() )
    {
        cout << data.getNom() << " " << data.getStr() << endl;
        noomInp.read( reinterpret_cast< char * >( &data ), sizeof( fail ) );
    }
 
    noomInp.close();
}
ошибка в следующем( см. вложение )

и еще вопрос когда записываешь в файл спомощью операции read он в файл записывает в двоичной виде, можно ли записывать его через read, но что бы после записи в файл его можно было прочесть обычному пользователю? Просто создавать отдельный файл?
Миниатюры
Работа с файлами  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2011, 00:06     Работа с файлами
Посмотрите здесь:

C++ работа с файлами
C++ Работа с файлами
C++ работа с файлами
Работа с файлами C++
C++ Работа с файлами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andruchka
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
25.12.2011, 11:45  [ТС]     Работа с файлами #2
что ни кто не знает в чем проблема?
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,898
Завершенные тесты: 1
25.12.2011, 12:06     Работа с файлами #3
Все знают, но лень отвечать по такой ерунде. string нельзя писать в файл напрямую, это не POD-тип. Надо писать по отдельности число и содержимое буфера строки, возвращаемое функцией c_str. Читать - в промежуточный буфер char и потом порождать из того буфера string, ну или присваивать там... Попытки писать-читать string как обычный кусок памяти напоминают попытку пересадки селезёнки ножом и вилкой с использованием вместо донорского органа еловой шишки.
Andruchka
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 26
25.12.2011, 12:18  [ТС]     Работа с файлами #4
в книге через string написано, и у них вроде как все работает просто
Yandex
Объявления
25.12.2011, 12:18     Работа с файлами
Ответ Создать тему
Опции темы

Текущее время: 21:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru