我需要检查用户是否输入了像 1,15,-1 这样的整数或像 2bda 或 5afnd 等字符串。可以通过使用字符串轻松完成。
可以在 C 或 C++ 中使用 int 变量来完成吗?
最佳答案
不,int
不能存储任意字符串。
int
是一个有符号整数类型,它保存的值介于某个最小值和最大值之间,具体取决于实现定义的大小。整数中没有内置错误状态或错误值(与具有非数字值 NaN
的浮点类型不同)。但是,您可以选择无效值,通常是最小值或最大值,或者如果只需要正值,则可以选择负值。然后您可以在处理之前检查该值。例如:
#include <climits> // for INT_MIN
bool is_valid( int value )
{
return value != INT_MIN;
}
int get_value( const std::string& str_value )
{
std::istringstream ss( str_value );
int value;
if( ss >> value )
return value;
else
return INT_MIN;
}
void print_if_valid( int value )
{
if( is_valid( value ) )
std::cout << value << std::endl;
else
std::cout << "invalid" << std::endl;
}
int main()
{
int num1 = get_value( "2" );
int num2 = get_value( "a" );
print_if_valid( num1 );
print_if_valid( num2 );
return 0;
}
请注意,使用此解决方案,如果该值实际上是 INT_MIN
(如果 int
是 32 位,则为 -2147483648),它仍将被视为无效即使它是一个有效的int
。
关于c++ - 使用整型变量检查用户输入是整数还是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293963/