Malaja
|
|
« : 11-03-2005 14:23 » |
|
Люди, может кто помнит, в чем соль : создаю обычное win32 console application, хочу использовать cout. Все компилится и выполняется за исключением одной мелочи - в дос - окне не появляется выводимый cout - ом текст
|
|
|
Записан
|
холоднокровней, Маня, Ви не на работе --------------------------------------- четкое определение сущности бытия: - А мы в прошлом или в будущем?- спросила Алиса. - Мы в жопе, - ответил кролик. - А "жопа" - это настоящее? - спросила Алиса. - А "жопа" - это у нас символ вечности.
|
|
|
npak
|
|
« Ответ #1 : 11-03-2005 16:02 » |
|
А как ты выводишь с cout? Должно что-то выводиться?
Попробуй напечатать через printf, появится на экране или нет?
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #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
|
|
« Ответ #3 : 11-03-2005 16:40 » |
|
nikedeforest,
У меня сначала выводило только текст из printf, потом я добавила << endl; , после чего все встало на свои места! Ну очень интересно - такого я так точно не помню, чтобы от этого что-то зависело! Но в моей программке этот << endl есть, а не работает... Там была какая-то мелочь, но я не помню, какая ...
|
|
|
Записан
|
холоднокровней, Маня, Ви не на работе --------------------------------------- четкое определение сущности бытия: - А мы в прошлом или в будущем?- спросила Алиса. - Мы в жопе, - ответил кролик. - А "жопа" - это настоящее? - спросила Алиса. - А "жопа" - это у нас символ вечности.
|
|
|
Malaja
|
|
« Ответ #4 : 11-03-2005 16:45 » |
|
Заработало! Что это было - не знаю Я закрыла проект, потом опять открыла и перекомпилировала все по новой. Похоже, что студия где-то головой приболела Кстати посмотрела у себя внимательней - в одном месте << endl отсутствовал, так с этого момента вывода не было (было выведено все, что имело этот самый смешной хвостик). Почему указание на новую строку так повлияло - не знаю, ведь теоретически могно выводить бесконечно в одну строку и должно работать! Спасибо всем!
|
|
|
Записан
|
холоднокровней, Маня, Ви не на работе --------------------------------------- четкое определение сущности бытия: - А мы в прошлом или в будущем?- спросила Алиса. - Мы в жопе, - ответил кролик. - А "жопа" - это настоящее? - спросила Алиса. - А "жопа" - это у нас символ вечности.
|
|
|
nikedeforest
|
|
« Ответ #5 : 11-03-2005 17:13 » |
|
А что за <<endl? Это что такое есть, для чего это нужно, аж без него проблемы возникают?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Finch
Спокойный
Администратор
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
|
|
« Ответ #8 : 12-03-2005 10:00 » |
|
Малая,
попробуй cout.flush() Должно помочь.
|
|
|
Записан
|
|
|
|
Malaja
|
|
« Ответ #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
|
|
« Ответ #11 : 14-03-2005 09:13 » |
|
xelos,
правильно, по теории все так и есть, а на практике - не сработало! Я не знаю почему. Сначала вообще никаких сообщений в окне не было! Потом я закрыла студию, открыла ее еще раз, опять перекомпилировала и запустила, после чего хотя бы часть сообщений показалась! Именно та, где я endl не забыла (я в одном месте слушайно его пропустила), а все остальное не появлялось, пока я свою ошибку не исправила. Посему я для верности решила внести всюду flush. Программа посылает фаилы на сервер и забирает ответ, посему очень может быть, что она перегружена и выводимые потоки обрабатываются не сразу.
|
|
|
Записан
|
холоднокровней, Маня, Ви не на работе --------------------------------------- четкое определение сущности бытия: - А мы в прошлом или в будущем?- спросила Алиса. - Мы в жопе, - ответил кролик. - А "жопа" - это настоящее? - спросила Алиса. - А "жопа" - это у нас символ вечности.
|
|
|
xelos
Гость
|
|
« Ответ #12 : 14-03-2005 09:24 » |
|
в таком случае и с использованием флюша те же самые проблемы могут быть какая разница, явно он вызывается или неявно endl его вызывает? это я к тому, что два раза по сути флюшируешь поток - через endl и явным вызовом метода flush()...
|
|
|
Записан
|
|
|
|
Malaja
|
|
« Ответ #13 : 14-03-2005 09:35 » |
|
xelos, может, если оно дважды вызывается, то хоть один раз произойдет? А в принципе, конечно, полностью застраховаться невозможно (или почти невозможно), т.е. масло масляное не есть абсолютно грамотное решение проблемы. Но если другие идеи пока отсутствуют, то лучше так.
|
|
|
Записан
|
холоднокровней, Маня, Ви не на работе --------------------------------------- четкое определение сущности бытия: - А мы в прошлом или в будущем?- спросила Алиса. - Мы в жопе, - ответил кролик. - А "жопа" - это настоящее? - спросила Алиса. - А "жопа" - это у нас символ вечности.
|
|
|
|