gpt4 book ai didi

c++ - 无法使用 cin.get() 读取两个字符串

转载 作者:行者123 更新时间:2023-11-30 01:48:43 26 4
gpt4 key购买 nike

sample execution为什么尝试使用 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++ 的方法.. (如果你觉得这个问题太糟糕了,请在投反对票之前在评论中提及,我已经在 21 个代表处苦苦挣扎了!)

最佳答案

\n 将在第一个 cin 之后保留在缓冲区中。你可以通过添加一个空的 cin.get() 来解决这个问题

cin.get(a,11);
n = atoi(a);
cin.get();
cin.get(b,11);
cout<<b;
k = atoi(b);

关于c++ - 无法使用 cin.get() 读取两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com