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


Автор: Artefact 22.2.2008, 21:49
Начал главу "Файлы:электронное хранилище" и решил написать простенькую программу, но столкнулся с проблемой. Я написал код:
Код

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

int main ()
{   int n;
    ifstream file_in("proba2.txt", ios::in);
    cout<<"Хотите увидеть текст?";
    cout<<"1-да, 2-нет"<<endl;
    cin>>n;
    switch(n)
    {
     case 1: cout<<file_in<<endl; break;
     case 2: cout<<"Программа завершена"<<endl; break;
     default: break;
    }
    return 0;
}

Он скомпилировался, но к сожалению при выполнение выдает следующее:
Код

Artefact@Artefact-laptop:~/Desktop/fst$ ./fst
Хотите увидеть текст?1-да, 2-нет
1
0xbfa200f4
Artefact@Artefact-laptop:~/Desktop/fst$

В файле proba2.txt набран следующий текст:
abra kadabra

Подскажите, почему у меня вылазит 0xbfa200f4? Где я допустил ошибку? 
Заранее благодарю  smile 

Автор: Xenon 22.2.2008, 22:01
Код

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

int main ()
{   int n;
    ifstream file_in("proba2.txt", ios::in);
    cout<<"Хотите увидеть текст?";
    cout<<"1-да, 2-нет"<<endl;
    cin>>n;
    switch(n)
    {
     case 1: cout<<file_in.rdbuf()<<endl; break;
     case 2: cout<<"Программа завершена"<<endl; break;
     default: break;
    }
    return 0;

}

Автор: Artefact 22.2.2008, 22:05
Xenon,  спасибо огромное за помощь, но я не понял насчет file_in.rdbuf(), почему там .rdbuf() ? Если не сложно, объясните пожалуйста.

Автор: Xenon 22.2.2008, 22:09
Ну ты просто выводил адрес.
rdbuf возвращает указатель на filebuf.

Автор: criz 22.2.2008, 22:12
Цитата(Artefact @  22.2.2008,  21:49 Найти цитируемый пост)
Подскажите, почему у меня вылазит 0xbfa200f4?

Это дескриптор открытого файла

Автор: Artefact 22.2.2008, 22:15
Спасибо! 

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