【发布时间】:2015-05-08 08:55:44
【问题描述】:
为什么尝试使用 cin.get() 输入两个字符串会失败?我可以成功读取第一个字符串,但第二个字符串和后续操作的输入失败..见代码:
#include <iostream>
#include <stdlib.h>
int main(){
long int n,k;
char a[11],b[11];
cin.get(a,11);
n = atoi(a);
cin.get(b,11);
cout<<b;
k = atoi(b);
cout << "\ncin.rdstate(): " << cin.rdstate()
<< "\n cin.eof(): " << cin.eof()
<< "\n cin.fail(): " << cin.fail()
<< "\n cin.bad(): " << cin.bad()
<< "\n cin.good(): " << cin.good() << endl << endl;
}
我正在尝试输入两个字符串并将它们存储到 long int 变量中,如程序所示,但 cin.get(b,11) 失败并且发生堆栈溢出
k= atoi(b) 。此外,您可能会观察到 cout<<b 没有输出任何内容。最后 cin.fail() 设置为 1 ,这意味着我正在做某种逻辑错误。请帮助我纠正这个问题!
请建议一些快速且仅适用于 c++ 的方法..
(如果您觉得这个问题太糟糕,请在投反对票之前在 cmets 中提及,我已经在 21 名代表中挣扎!)
【问题讨论】:
-
您是否在代码中声明了“a”和“b”?
-
您能告诉我们您的意见吗?
-
当您使用 C++ 进行编码时,我建议您使用
std::string而不是 C 的char[] -
我建议改用
std::string和std::getline。如果你有 C++11,那么std::stoi转换为整数。 -
std::string 够快吗??我必须在 3 秒内执行 2.5 Mbs 的输入和输出 .. 我这样做是为了比赛..