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