Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не понимаю что выводится на консоль, работа с потоками и файлами 
:(
    Опции темы
slutsker
Дата 17.7.2007, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 24.5.2007

Репутация: нет
Всего: нет



при выполнении:
Код

int i;
    ifstream d("c:/test/1.txt");
    cout<<(d>>i);

получаю: 0012ff18
а если 
Код

int i;
    ifstream d("c:/test/1.txt");
            d>>i
    cout<<i;

выводится число из файла

объясните пожалуйста откуда берется 0012ff18 в первом случае!

--------------------
Compiling...project.cppLinking...Embedding manifest...========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
PM MAIL   Вверх
jonie
Дата 17.7.2007, 08:25 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата

Код

int i;
    ifstream d("c:/test/1.txt");
    cout<<(d>>i);

это раскрывается в 
Код

cout.operator<<(d>>i)

что раскрывается в
Код

cout.operator<<(d.operator>>(i))

тип возрата у d.operator>>() есть ifstream&. Вот его и выводит (ссылка есть тоже что указатель фактически, т.е. выводится адресс объекта типа ifstream).

Это сообщение отредактировал(а) jonie - 17.7.2007, 08:27


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
archimed7592
Дата 17.7.2007, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



 smile 
Выводится вовсе не адрес объекта ifstream.
Никогда не задумывались, почему конструкция
Код
if(d) ...
будет работать? smile
Потому, что объекты этого типа неявно преобразуются в другой тип, который convertible to bool.
Как правило это void * или C::*.
Т.о. выводится то значение, которое получается при неявном преобразовании d к "чему-то". К чему не специфицированно. Гарантируется лишь то, что это "что-то" будет неявно преобразовываться к bool и после такого преобразования иметь значение true, если поток жив и false, если произошла ошибка.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.