注册 登录
编程论坛 C++ Builder

这个程序为什么停不住?

jr9910 发布于 2010-09-03 21:38, 1531 次点击
我使用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这个界面停留等待回车换行的输入,方便观察运行结果。但是这个程序例外。有人能帮忙看看么?
5 回复
#2
az98416822010-09-05 06:53
#include <iostream>
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;
}
#3
yijiaoyingbi2010-09-07 08:43
我在bcb里运行了下,结果正常

另可以调用system(“pause”),使程序不会立即退出的
#4
jr99102010-09-07 20:40
回复 2楼 az9841682
这个只是将using namespace std移到main函数以外,其实在这个例子当中在main函数以内和以外都是一样的。并没有本质的区别。

[ 本帖最后由 jr9910 于 2010-9-7 20:47 编辑 ]
#5
jr99102010-09-07 20:45
回复 3楼 yijiaoyingbi
这个程序并没有任何问题,也应该可以停住,真正的原因我找到了。是测试的问题。因为程序是逐个读入字符的,实际上是回车换行确定以后,程序才开始读入一行输入。这样的话,如果输入是nalgna#langa之类的,就是说#之后还包含一个以上的字符,那么两个cin.get()当然就是不够用了。
#6
童言无忌2011-04-11 15:28
在return 0;上面加一句 system(“pause”);即可
1