Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;如何在函数的一行中读取更多整数?_C++_Cin - Fatal编程技术网

C++ C++;如何在函数的一行中读取更多整数?

C++ C++;如何在函数的一行中读取更多整数?,c++,cin,C++,Cin,我有一个函数,当前读取一个整数,并检查错误(太大太小或不是整数) int be_egesz(string question, int minval, int maxval, string error_message) { bool error; string tmp; int number; do { cout << question << endl; cin >> szam;

我有一个函数,当前读取一个整数,并检查错误(太大太小或不是整数)

int be_egesz(string question, int minval, int maxval, string error_message)
{
    bool error;
    string tmp;
    int number;
    do
    {
        cout << question << endl;
        cin >> szam;
        error=cin.fail() || cin.peek()!='\n' || (number<minval || number>maxval);
        if (error)
        {
            cout << error_message << endl;
        }
        cin.clear();
        getline(cin,tmp,'\n');
    }while(error);
    return number;
}
int be_egesz(字符串问题、int最小值、int最大值、字符串错误消息)
{
布尔误差;
串tmp;
整数;
做
{
库森;
error=cin.fail()| | cin.peek()!='\n'| |(numbermaxval);
如果(错误)
{

难道关于
std::cin
和读取两个变量如何

#include <iostream> 
using std::cout;
using std::cin;

int main() {
    int x;
    int y;

    cin>>x>>y;

    cout<<"Value 1: "<<x<<"\n"<<"Value 2: "<<y<<"\n";
return 0;
}
输出:

Value 1: 1
Value 2: 5
您还可以使用两个以上的整数值:

int x;
int y;
int z;

cin>>x>>y>>z;
如果它们太大或太小,比较它们就像其他场景一样:

cin>>x>>y;

if(x > 10)
    cout<<x<<" is Greater than 10\n";

if(y > 10)
    cout<<y<<" is Greater than 10\n";
cin>>x>>y;
如果(x>10)

cout这里要说的重要一点是,
>
操作符默认从流中提取(在您的例子中是stdin)所有字符直到下一个空格。因此,如果在标准输入中写入
12
,则需要两次调用
>
操作符来读取1和2。不过,它们不需要在代码中的同一行

如果您需要一次检查一个号码,您可以再次调用您的函数。例如:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    int x;
    string str;

    getline(std::cin, str);
    stringstream ss(str);

    while (! ss.eof()) {
        ss >> x;
        cout << "Num: " << x << endl;
    }
    return 0;
}
你会得到:

Num: 1
Num: 2
Num: 3
Num: 4

因此,您可以在一个类似的代码中插入您的函数,并在循环中调用它。

我的主要问题是调查错误。

您可以读取std::字符串,然后使用正则表达式解析整数。我是唯一一个想知道什么是
szam
的人吗?@WhozCraig是的;显然是一个错误的未翻译匈牙利
数字
>!可惜OP没有展示他们的实际测试用例:(抱歉,我在翻译它时很累:这也是解决这个问题的可行方法,OP只需要实现一个过滤器(比如isalpha/isdigit)若要清除任何非法字符,请编辑您的问题或在评论中继续,如果您没有回答,请不要尝试进行任何澄清并将其作为答案发布。
1 2 3 4
Num: 1
Num: 2
Num: 3
Num: 4