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

std::cin does not accept input, program closes immediately

本文关键字:程序 不接受 输入 cin      更新时间:2023-10-16

我试图获得一个字符串作为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;
}

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

你的代码是错误的:

cin >> a, b;

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

cin >> a;
cin >> b;

同样适用于其他类型

还要注意:

void main( void )

不正确。main 必须返回int:

int main( void )
{
    return 0;
}

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

cin >> a;
b;

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

cin >> c;
d;
e;

结果是,当计算第二个cin >> ...语句时,您输入的第二个单词仍然在输入缓冲区中,它完成了,而无需等待用户的更多输入。

这是错误的:

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

Try with:

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;
}