在C++中解析字符串中的数字
我试图解析存储在char[]变量中的数字,以便对其运行IF语句。我尝试过使用Atoi,但这不起作用,也许我实现错了 <>我也在C++中做了什么,这里代码片段 C C++在C++中解析字符串中的数字,c++,c,if-statement,C++,C,If Statement,我试图解析存储在char[]变量中的数字,以便对其运行IF语句。我尝试过使用Atoi,但这不起作用,也许我实现错了 我也在C++中做了什么,这里代码片段 C C++ 由于您希望用户输入一个整数,您可能希望使用一个int变量来保存他们输入的内容: int port_number; do{ cout<<"Enter Port Number between 1-1024"<<endl;; cin>> port_number; if(por
由于您希望用户输入一个整数,您可能希望使用一个int变量来保存他们输入的内容:
int port_number;
do{
cout<<"Enter Port Number between 1-1024"<<endl;;
cin>> port_number;
if(port_number < 1 || port_number > 50){
cout<<"Incorrect Input Retry"<<endl;;
}
} while(port_number < 1 || port_number > 50);
但是请注意,这仍然有点过于简单-如果用户输入非数字的内容,例如abc,这将无法很好地处理它-它将陷入无限循环 工作正常,更易于阅读C++:
int data;
std::cout << "Enter Port Number between 1-1024" << std::endl;
while (std::cin >> data && (data < 1 || data > 1024))
std::cout << "Please re-enter the port number!";
std::cout << "port number: " << data << std::endl;
提示:
使用原始数组是一个坏主意,因为在内存中可能会发生缓冲区溢出
你的案子也是!将std::vector与include或
std::数组。
避免空洞的陈述;;他们只是
无意义的
避免使用名称空间std;特别是在全局范围和头文件中,请参见
以大写字母开头的变量用于类和结构名称。
@user1949280:既然你想要一个数字结果,为什么它必须是一个字符,不管它是什么——尽管可能至少与字符有点类似。它必须是一个只包含数字的字符串。如果你想将它作为数字处理,为什么需要一个字符串?我会不会不苛求地假设其中包含了某种家庭作业?@user1949280我实际上根据你提问的方式假设你想要字符串输入,但你给出的代码并没有真正解释原因。这是真正的代码,还是您的用例不同,还是家庭作业?字符数据不是Int数据,我需要输入一个只包含数字的字符串。。。
int port_number;
do{
cout<<"Enter Port Number between 1-1024"<<endl;;
cin>> port_number;
if(port_number < 1 || port_number > 50){
cout<<"Incorrect Input Retry"<<endl;;
}
} while(port_number < 1 || port_number > 50);
int data;
std::cout << "Enter Port Number between 1-1024" << std::endl;
while (std::cin >> data && (data < 1 || data > 1024))
std::cout << "Please re-enter the port number!";
std::cout << "port number: " << data << std::endl;
std::string data;
int portNr;
do
{
std::cout << "Enter Port Number between 1-1024" << std::endl;
std::cin >> data;
std::stringstream sstr (data);
if ((sstr >> portNr).fail())
continue;
}
while (portNr < 1 || portNr > 1024);