C++ 在短范围内验证字符串
我有一个字符串中的短整数。例如:“123456”。是否有API来检查字符串是否包含在无符号短字符范围内的有效数字C++ 在短范围内验证字符串,c++,validation,C++,Validation,我有一个字符串中的短整数。例如:“123456”。是否有API来检查字符串是否包含在无符号短字符范围内的有效数字 谢谢 我将使用strtol转换数字,并使用“endptr”参数检查数字字符串是否有效。然后您可以将其转换为一个短字符并检查是否相等。我将使用strtol转换数字,并使用“endptr”参数检查它是否是有效的数字字符串。然后,您可以将其转换为短字符并检查是否相等。只需使用流运算符输入数字: istringstream istr("12346"); short s; if ((istr
谢谢 我将使用strtol转换数字,并使用“endptr”参数检查数字字符串是否有效。然后您可以将其转换为一个短字符并检查是否相等。我将使用strtol转换数字,并使用“endptr”参数检查它是否是有效的数字字符串。然后,您可以将其转换为短字符并检查是否相等。只需使用流运算符输入数字:
istringstream istr("12346");
short s;
if ((istr >> s) and istr.eof())
cout << "valid: " << s << endl;
else
cout << "invalid" << endl;
istringstream istr(“12346”);
短s;
如果((istr>>s)和istr.eof())
cout只需使用流运算符输入数字:
istringstream istr("12346");
short s;
if ((istr >> s) and istr.eof())
cout << "valid: " << s << endl;
else
cout << "invalid" << endl;
istringstream istr(“12346”);
短s;
如果((istr>>s)和istr.eof())
我喜欢:
#包括
#包括
#包括
int main(){
std::字符串s(“12346”);
试一试{
boost::词法转换;
我喜欢:
#包括
#包括
#包括
int main(){
std::字符串s(“12346”);
试一试{
boost::词法转换;
std::cout检查数字是否在某个范围内的最简单方法应该是将其转换为整数(足够大的整数类型,例如long
)并使用比较运算符…您的意思是除errno=0;strtoul(str,0,10)之外的其他检查一个数字是否在一个范围内的最简单的方法应该是把它转换成整数(一个足够大的整数类型,例如“代码>长< /代码>”)和使用比较运算符……你的意思是除了<代码> ErnO=0;Stroul(STR,0, 10)-1这将不总是工作。考虑你的字符串是否是“1542 2451”。你的程序将打印。“有效期:1542".@Mihran-这是怎么断开的?1542是一个有效的短AFAIK。OP没有提到字符串中有多个数字-因此,这个解决方案很好…我认为OP想检查:1.如果字符串包含整数2。如果它在短范围内。但是这个答案不符合第一个条件。@Mihran:好的,只需检查eof即可代码>随后。查看修改后的答案。- 1,这将不总是工作。考虑如果您的字符串是“1542 2451”。您的程序将打印“有效:1542”。.@Mihran-这是怎么断开的?1542是一个有效的短AFAIK。OP没有提到字符串中有多个数字-因此,这个解决方案很好…我认为OP想检查:1.如果字符串包含整数2。如果它在短范围内。但是这个答案不符合第一个条件。@Mihran:好的,只需检查eof即可代码>之后。参见修改后的答案。