这个程序为什么停不住?
我使用VS2008建立了下面一个控制台程序。// textin1.cpp -- reading chars with a while loop
#include <iostream>
int main()
{
using namespace std;
char ch;
int count = 0;
cout << "Enter characters: enter # to quit:\n";
cin >> ch;
while (ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
cin.get();
cin.get();
return 0;
}
程序运行以后,dos那个窗口一闪就没有了,以前有cin的情况使用两个cin.get()函数就能将留在输入队列当中的回车换行去掉,使dos这个界面停留等待回车换行的输入,方便观察运行结果。但是这个程序例外。有人能帮忙看看么?
using namespace std;
int main()
{
char ch;
int count = 0;
cout << "Enter characters: enter # to quit:\n";
cin >> ch;
while (ch != '#')
{
cout << ch;
++count;
cin >> ch;
}
cout << endl << count << " characters read\n";
cin.get();
cin.get();
return 0;
} 我在bcb里运行了下,结果正常
另可以调用system(“pause”),使程序不会立即退出的
回复 2楼 az9841682
这个只是将using namespace std移到main函数以外,其实在这个例子当中在main函数以内和以外都是一样的。并没有本质的区别。[[i] 本帖最后由 jr9910 于 2010-9-7 20:47 编辑 [/i]]
回复 3楼 yijiaoyingbi
这个程序并没有任何问题,也应该可以停住,真正的原因我找到了。是测试的问题。因为程序是逐个读入字符的,实际上是回车换行确定以后,程序才开始读入一行输入。这样的话,如果输入是nalgna#langa之类的,就是说#之后还包含一个以上的字符,那么两个cin.get()当然就是不够用了。 在return 0;上面加一句 system(“pause”);即可页:
[1]