Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么isdigit()不起作用?_C++_Function - Fatal编程技术网

C++ 为什么isdigit()不起作用?

C++ 为什么isdigit()不起作用?,c++,function,C++,Function,代码: #包括 #包括 使用名称空间std; 串s1、s2、s3、s4、s5; int-ex(字符串s){ int i; 如果(数字){ i=atoi(s.c_str); } 其他的 返回-1; 返回i; } int main(){ intt;cin>>t;intv1、v2、v3; 而(t--){ cin>>s1>>s2>>s3>>s4>>s5; v1=ex(s1); v2=ex(s2); v3=ex(s3); if(v1用于检查单个字符是否为数字,而不是字符串。这就是调用isdigit无法编译

代码:

#包括
#包括
使用名称空间std;
串s1、s2、s3、s4、s5;
int-ex(字符串s){
int i;
如果(数字){
i=atoi(s.c_str);
}
其他的
返回-1;
返回i;
}
int main(){
intt;cin>>t;intv1、v2、v3;
而(t--){
cin>>s1>>s2>>s3>>s4>>s5;
v1=ex(s1);
v2=ex(s2);
v3=ex(s3);
if(v1用于检查单个字符是否为数字,而不是字符串。这就是调用
isdigit
无法编译的原因

您可以使用。但是,请记住,如果函数无法执行任何转换,它将引发异常

try
{
   i = std::stoi(s);
}
catch ( ... )
{
   // Deal with the exception
}
您还可以在尝试使用之前检查字符串的第一个字符是否为数字

铌 来自@RemyLebeau的评论:

检查以上内容,因为这不能保证字符串中的所有字符都是数字。
std::stoi()
解析整个字符串,然后报告第一个非数字字符的索引,即使它是空终止符。它还跳过前导空格,因此检查第一个字符可能会导致错误结果,而
std::stoi()
通常会成功

用于检查单个字符是否为数字,而不是字符串。这就是调用
isdigit(s)
无法编译的原因

您可以使用。但是,请记住,如果函数无法执行任何转换,它将引发异常

try
{
   i = std::stoi(s);
}
catch ( ... )
{
   // Deal with the exception
}
您还可以在尝试使用之前检查字符串的第一个字符是否为数字

铌 来自@RemyLebeau的评论:

检查以上内容,因为这不能保证字符串中的所有字符都是数字。
std::stoi()
解析整个字符串,然后报告第一个非数字字符的索引,即使它是空终止符。它还跳过前导空格,因此检查第一个字符可能会导致错误结果,而
std::stoi()
通常会成功


你忘了。在那里找到了…它需要一个
char
(实际上是
int
的C兼容性)not
std::string
刚刚做过,仍然是相同的错误!适用于字符,而不是字符串。为什么不直接使用?请参阅。函数是digit,它以int作为参数。这有点令人困惑,意味着它只需要一个字符。因此,您需要在字符串上循环,将每个数字传递给
isdigit
。这更简单,更惯用对于C++ + to <代码> STD::StrugStule转换为int代码> ATOI 有很多问题。所以,像(j=0;Jy.忘记)。在那里找到……它需要一个<代码> char < /C>(实际上是代码> int <代码> C兼容)not
std::string
刚刚做过,仍然是相同的错误!适用于字符,而不是字符串。为什么不直接使用?请参阅。函数是digit,它以int作为参数。这有点令人困惑,意味着它只需要一个字符。因此,您需要在字符串上循环,将每个数字传递给
isdigit
。这更简单,更惯用对于C++ + to <代码> STD::String Strue转换为int代码> ATOI 有很多问题。因此,像(j=0;j)这样的东西,在尝试使用<代码> STD::StIIO()/<代码>之前,也可以检查字符串的第一个字符是否是数字。-小心,因为这不能保证字符串中的所有字符都是数字。
std::stoi()
解析整个字符串,然后报告第一个非数字字符的索引,即使它是空终止符。它还跳过前导空格,因此检查第一个字符可能会导致错误结果,而
std::stoi()
通常会成功。“您还可以在尝试使用
std::stoi()
”之前检查字符串的第一个字符是否为数字-请小心,因为这并不保证字符串中的所有字符都是数字。
std::stoi()
解析整个字符串,然后报告第一个非数字字符的索引,即使它是空终止符。它还跳过前导空格,因此检查第一个字符可能会导致错误结果,而
std::stoi()
通常会成功。