我尝试使用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;
}
此代码不允许我输入第二个输入,但我可以在程序关闭之前看到第二个输出。
答案 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;
}