gpt4 book ai didi

c++ - 刷新 cin 输入的正确方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:45 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

int a, b, c, d;

void main()
{
cout << "Reading a" << endl;
cin.ignore();
// cin.clear();
cin >> a;

cout << "Reading b" << endl;
cin.ignore();
// cin.clear();
cin >> b;

cout << "Reading c" << endl;
cin.ignore();
// cin.clear();
cin >> c;

cout << a << " " << b << " " << c << endl;
system("pause");
}

我从 a 到 c 读取了 3 次变量。当我输入随机数然后不使用空格(234566)接受它时,它会正常工作。但是,当我的输入看起来像这样 23 45 66(中间有空格)时,它会立即将 23 放入 a45b66c

我的意图是读取数字,以空格结束,然后忘记输入的其余部分并再次读取到下一个变量。

cin.ignore()cin.clear() 似乎对我没有帮助,但可能是我用错了。

我可以创建自己的缓冲区,然后检查它是否有空格,但在此之前我想看看是否有其他方法。

最佳答案

mikedu95 在评论中回答:

Read a whole line with getline, then perform string to integer conversion using stoi

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

string str;
int a, b, c, d;

void main()
{
cout << "Reading a" << endl;
getline(cin, str);
a = stoi(str);

cout << "Reading b" << endl;
getline(cin, str);
b = stoi(str);

cout << "Reading c" << endl;
getline(cin, str);
c = stoi(str);

cout << a << " " << b << " " << c << endl;
system("pause");
}

关于c++ - 刷新 cin 输入的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774742/

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