Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: win32 console application / cout  (Прочитано 17301 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 11-03-2005 14:23 » 

Люди, может кто помнит, в чем соль :

создаю обычное win32 console application, хочу использовать cout. Все компилится и выполняется за исключением одной мелочи - в дос - окне не появляется выводимый cout - ом текст  Быть такого не может
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 11-03-2005 16:02 » 

А как ты выводишь с cout? Должно что-то выводиться?

Попробуй напечатать через printf, появится на экране или нет?
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 11-03-2005 16:09 » 

У меня все выводит.
Сверься с моим кодом, может где попуталась случайно
Код:
#include "stdafx.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
int n=10;
cout << n;
cout << "hello world";
printf("Hello World!\n");
return 0;
}
Записан

ещё один вопрос ...
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #3 : 11-03-2005 16:40 » 

nikedeforest,

У меня сначала выводило только текст из printf, потом я добавила  << endl; , после чего все встало на свои места! Ну очень интересно - такого я так точно не помню, чтобы от этого что-то зависело!
Но в моей программке этот  << endl есть, а не работает...
Там была какая-то мелочь, но я не помню, какая ...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #4 : 11-03-2005 16:45 » 

Заработало! Что это было - не знаю Ага Я закрыла проект, потом опять открыла и перекомпилировала все по новой. Похоже, что студия где-то головой приболела Ага
Кстати посмотрела у себя внимательней - в одном месте << endl отсутствовал, так с этого момента вывода не было (было выведено все, что имело этот самый смешной хвостик). Почему указание на новую строку так повлияло - не знаю, ведь теоретически могно выводить бесконечно в одну строку и должно работать!
Спасибо всем!
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 11-03-2005 17:13 » 

А что за <<endl? Это что такое есть, для чего это нужно, аж без него проблемы возникают?
Записан

ещё один вопрос ...
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 11-03-2005 17:28 » 

Цитата
А что за <<endl? Это что такое есть, для чего это нужно, аж без него проблемы возникают?
Это перевод каретки. И я думаю, что из-за него не должны возникать проблемы. Я так думаю, проблема в другом.
« Последнее редактирование: 11-03-2005 17:30 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
xelos
Гость
« Ответ #7 : 11-03-2005 20:04 » 

поскоку cout делает вывод в поток ввода/вывода, endl служит для флюша буфера потока.
« Последнее редактирование: 11-03-2005 20:07 от xelos » Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 12-03-2005 10:00 » 

Малая,

попробуй cout.flush()
Должно помочь.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #9 : 14-03-2005 08:55 » 

npak,

спасибо за идею! Я не подумала о том, что поток может где-то задерживаться, особенно маленький! И в очередной раз выяснила, что пока сам все не сделаешь, никто для тебя ничего не сделает, т.е. все по классике : "спасение утопающих - дело рук самих утопающих" Ага Т.е. endl-хорошо, а flush - еще лучше Ага
Я просто после каждого вывода поставила вызов flush, дабы не искушать судьбу (ведь перед этим и с endl не сработало), ибо если на моей машине заклинило, то и на чужой может, а зачем мне эти трудности? 
Еще раз всем огромное спасибо!
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
xelos
Гость
« Ответ #10 : 14-03-2005 09:05 » 

endl тоже вызывает cout.flush();
так что с endl все должно работать без проблем.

MSDN:
endl Terminates a line and flushes the buffer.
Remarks
The manipulator calls _Ostr.put(_Ostr. widen('\n')), and then calls _Ostr.flush. It returns _Ostr.

« Последнее редактирование: 20-12-2007 21:11 от Алексей1153++ » Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #11 : 14-03-2005 09:13 » 

xelos,

правильно, по теории все так и есть, а на практике - не сработало! Я не знаю почему. Сначала вообще никаких сообщений в окне не было! Потом я закрыла студию, открыла ее еще раз, опять перекомпилировала и запустила, после чего хотя бы часть сообщений показалась! Именно та, где я endl не забыла (я в одном месте слушайно его пропустила), а все остальное не появлялось, пока я свою ошибку не исправила.
Посему я для верности решила внести всюду flush. Программа посылает фаилы на сервер и забирает ответ, посему очень может быть, что она перегружена и выводимые потоки обрабатываются не сразу.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
xelos
Гость
« Ответ #12 : 14-03-2005 09:24 » 

в таком случае и с использованием флюша те же самые проблемы могут быть УлыбаюсьУлыбаюсь какая разница, явно он вызывается или неявно endl его вызывает?

это я к тому, что два раза по сути флюшируешь поток - через endl и явным вызовом метода flush()...
Записан
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #13 : 14-03-2005 09:35 » new

xelos,

может, если оно дважды вызывается, то хоть один раз произойдет? Ага
А в принципе, конечно, полностью застраховаться невозможно (или почти невозможно), т.е. масло масляное не есть абсолютно грамотное решение проблемы. Но если другие идеи пока отсутствуют, то лучше так.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines