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兼容性)notstd::string
刚刚做过,仍然是相同的错误!适用于字符,而不是字符串。为什么不直接使用?请参阅。函数是digit,它以int作为参数。这有点令人困惑,意味着它只需要一个字符。因此,您需要在字符串上循环,将每个数字传递给isdigit
。这更简单,更惯用对于C++ + to <代码> STD::StrugStule转换为int代码> ATOI 有很多问题。所以,像(j=0;Jy.忘记)。在那里找到……它需要一个<代码> char < /C>(实际上是代码> int <代码> C兼容)notstd::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()
通常会成功。