我在检查整数时遇到困难。如果用户仅输入字符或仅输入特殊字符,或者仅输入整数或整数,或者在整数之前输入任何特殊字符,我都可以找到它,但是在整数之后不处理特殊字符的情况下。所以任何人请帮我。
port:cout << "Enter the port number:" << endl;
cin >> nPort;
if(!cin)
{
cout << "Invalid Port Number" << endl;
cin.clear();
cin.ignore(MAX_SIZE,'\n');
goto port;
}
答案 0 :(得分:0)
我认为链接的其他帖子并不准确。
以下代码将读取输入字符串。如果数字后面有一些非数字标记,则将忽略它们。无论如何,将读取整个输入字符串,因此之后cin
为空。如果数字前有一些非数字输入,则整个操作将失败。
#include <iostream>
#include <sstream>
using namespace std;
int main() {
cout << "enter number: ";
int port;
string readLine;
getline(cin, readLine);
stringstream reader(readLine);
if(reader >> port)
{
std::cout << "Port is " << port;
}
else
{
std::cout << "Invalid input!";
}
return 0;
}
答案 1 :(得分:0)
首先,您必须验证为变量nPort提供的输入是否为整数,如果为整数,则应在端口范围内。
#include<iostream>
#include<iterator>
#include<string>
using namespace std;
bool is_number(string &port){
string::iterator it = port.begin();
while(it!=port.end() && isdigit(*it)) it++;
return !port.empty() && it == port.end();
}
int main() {
string nPort;
cin >> nPort;
if(is_number(nPort) && stoi(nPort)<=65535) cout << "Port Valid" << endl;
else cout << "Port invalid" << endl;
return 0;
}