std :: cin不接受输入,程序立即关闭

时间:2014-05-09 17:02:42

标签: c++ string input int cin

我尝试使用cin获取字符串作为输入并且它有效,但是当我尝试在字符串之后输入int作为输入时,控制台不会要求它和程序关闭。这是我的代码:

#include <iostream>
#include <string>
using namespace std;

void main(void)
{ 
string a, b;
int c, d, e;

cout << "Enter two words \n";
cin >> a, b; 
cout << "Enter three int";
cin >> c, d, e;
cout << c*d;
}

此代码不允许我输入第二个输入,但我可以在程序关闭之前看到第二个输出。

4 个答案:

答案 0 :(得分:5)

你的代码错了:

cin >> a, b;

不会给你你所期望的。在您需要从cin读取字符串时,请使用:

cin >> a;
cin >> b;

这同样适用于其他类型。

另请注意:

void main( void )

不正确。 main 必须返回int

int main( void )
{
    return 0;
}

答案 1 :(得分:4)

cin >> a, b;使用逗号运算符从左到右评估不同的表达式。结果与以下代码相同:

cin >> a;
b;

当到达行cin >> c, d, e;时,它同样被评估为:

cin >> c;
d;
e;

结果是,当评估第二个cin >> ...语句时,您输入的第二个单词仍然在它完成的输入缓冲区中,而不等待来自用户的更多输入。

答案 2 :(得分:3)

这是错误的:

cin >> a, b; 

应该是:

cin >> a >> b; 

同样地:

cin >> c, d, e;

应该是:

cin >> c >> d >> e;

确保将来启用编译器警告 - 这样编译器就可以为您指出许多这样的简单错误。当我编译原始代码并启用警告时,我得到:

$ g++ -Wall junk.cpp
junk.cpp:5:1: error: 'main' must return 'int'
void main(void)
^~~~
int
junk.cpp:13:11: warning: expression result unused [-Wunused-value]
cin >> c, d, e;
          ^
junk.cpp:11:11: warning: expression result unused [-Wunused-value]
cin >> a, b;
          ^
junk.cpp:13:14: warning: expression result unused [-Wunused-value]
cin >> c, d, e;
             ^
3 warnings and 1 error generated.

由此可以很容易地看出两条cin行存在问题,并且您还需要将main的返回类型更改为int

答案 3 :(得分:1)

尝试:

int main(void)
{ 
string a, b;
int c, d, e;

cout << "Enter two words \n";
cin >> a >> b; 
cout << "Enter three int";
cin >> c >> d >> e;
cout << c*d;
}