Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ПОМОГИТЕ!!! Первая проблема многих!


Автор: WebXL 14.1.2005, 11:52
Здравствуйте!
Я только начал изучать сpp!
Создал файл first.cpp
с текстом
----------
#include <iostream.h>

void main(void)

{
cout << "ПРИВЕТ!";
}

----------
Компилируется нормально, а при запуске, на долю секунды появляется окно и сразу исчезает, хотя должен вывести надпись "ПРИВЕТ!"

Компилирую в borland c++ 5.5 ОС Win XPSP2.
Ошибок нет, скорее всего и надпись выводится, просто окно сразу исчезает.
Как сделать чтобы окно с надписью оставалось (и я мог увидеть надпись)?

Автор: azesmcar 14.1.2005, 11:55
Код

#include <iostream.h>
#include <conio.h>

void main(void)
{
   cout << "ПРИВЕТ!";
   getch();
}

Автор: Найли 14.1.2005, 11:56
просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
при использовании getch() окно закроется при нажатии любой клавиши, а при while(1) его надо будет закрывать в ручную


Автор: WebXL 14.1.2005, 12:02
просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
-----------

Что-то не получилось :-(
Добавлено @ 12:03
Код

#include <iostream.h>
#include <conio.h>

void main(void)
{
cout << "ПРИВЕТ!";
getch();
}
----------------
Окно не исчезло, но текст выдался в виде непонятных символов (наверное кодировка...),
А с этой проблемой можно справиться?

Спасибо Вам за помощь!
Добавлено @ 12:08
Цитата
просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
при использовании getch() окно закроется при нажатии любой клавиши, а при while(1) его надо будет закрывать в ручную

При использовании while(1); компилятор выдал ошибку.
При использовании getch() окно осталось, но символы нечитабельные.
Что-то я не в одном учебнике (где во всех, поголовно, этот код - пример первой программы) описаний таких проблем не встретил.
Как с кодировкой (или что это там еще такое) быть я совсем не в курсе :-(

Автор: Найли 14.1.2005, 12:09
Код

#include<iostream>
#include<stdio.h>

using namespace std;

void main()
{
cout<<"Hello!";
while(1);
}



вот так всё нормально работает

Автор: WebXL 14.1.2005, 12:13
Цитата
Код

#include<iostream>
#include<stdio.h>

using namespace std;

void main()
{
cout<<"Hello!";
while(1);
}



вот так всё нормально работает

Так работает!!!
Но только латинскими символами.
А Вы не знаете, как включить поддержку кириллицы???

Автор: azesmcar 14.1.2005, 13:37
Цитата
просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
при использовании getch() окно закроется при нажатии любой клавиши, а при while(1) его надо будет закрывать в ручную


Да да, зависшее окошко придется закрывать вручную..smile)
Посмотри в окошке TaskManager сколько ресурсов будет жрать этот бесконечный цикл...Какой в этом смысл??? getch() вполне подходит для этой цели...

Цитата
Окно не исчезло, но текст выдался в виде непонятных символов (наверное кодировка...),
А с этой проблемой можно справиться?


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


Автор: WebXL 14.1.2005, 15:08
Цитата(azesmcar @ 14.1.2005, 13:37)
Цитата
просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
при использовании getch() окно закроется при нажатии любой клавиши, а при while(1) его надо будет закрывать в ручную


Да да, зависшее окошко придется закрывать вручную..smile)
Посмотри в окошке TaskManager сколько ресурсов будет жрать этот бесконечный цикл...Какой в этом смысл??? getch() вполне подходит для этой цели...

Цитата
Окно не исчезло, но текст выдался в виде непонятных символов (наверное кодировка...),
А с этой проблемой можно справиться?


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

Спасибо!
Разобрался, и за урок "умного" программирования спасибо - действительно неправильно, если с самого начала учиться программировать так, что простая программка будет жрать ресурсов как большая ОС :-)

Автор: Nicky 19.1.2005, 14:56
Цитата

просто добавь в код, напрмиер, while(1); после cout
и все окно не исчезнет
при использовании getch() окно закроется при нажатии любой клавиши, а при while(1) его надо будет закрывать в ручную

Это плохой стиль программирования smile

Использование функции getch() лучший вариант в этом случае smile

Автор: Tripl-X 24.1.2005, 23:36
Да,Nicky прав. тоько не забудь подключить библиотеку conio.h, я вот раз забыл, меня прееод на экзамене завалил...smile

Автор: Nastya 25.1.2005, 23:48
И еще перед вызовом getch()
напиши cout.flush() или cout<<endl
а то часть выведенного перед этим моежт не показаться

Автор: Nicky 26.1.2005, 00:44
Цитата(Nastya @ 25.1.2005, 23:48)
И еще перед вызовом getch()
напиши cout.flush() или cout<<endl
а то часть выведенного перед этим моежт не показаться

с этим никогда пока ешё не было проблем smile smile

Автор: Tripl-X 27.1.2005, 23:30
Nastya
Цитата(Nastya @ 26.1.2005, 03:48)
И еще перед вызовом getch()
напиши cout.flush() или cout<<endl
а то часть выведенного перед этим моежт не показаться


Ни разу не слышал... smile

Автор: Nicky 28.1.2005, 15:26
Я тоже первый раз это вижу но всётаки опыт покажет ведь я так понял что Nasty достаточно опытна в этом smile так что я считаю эту информацию не одной из лишних.
Цитата
Лишняя инфа никогда не помешает, главное чтоб небыло ложью.


Автор: Nastya 28.1.2005, 23:48
Спасибо Nicky.
Для чего эта фишка. постараюсь пояснить.
Но вот вам вопрос smile в чем отличие cout<<endl от cout<<"\n"
Если второе это просто символ перевода коретки и перевода строки, то тгда зачем ввели второе.
Дело в том, что обычно (по умолчанию) cout поток буферезированный, т.е. все что вы выводите на экран сначало попадает в буфер, а после заполения или принудительного выталкивание уже "показывается" на экране.

так вот когда мысочетаем потовококвые функции с сишными функциями ввода/вывода, которой и является getch может быть ситуация, когда выведенный текст "застрянет" в буфере, если буфер заполнен частично.
Для этого и нужен cout.flush() это все протолкнуть smile

Автор: En_t_end 29.1.2005, 18:49
Цитата
cout.flush()

Кстати использую эту член-функцию класса, и в файловых потоках - как вантус подходит идеально smile

Автор: lynx_916 30.1.2005, 00:29
как вантуз для всех стримов, ФЛАШ рулит!

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