为什么这些完全相似的代码不起作用?
Why do these perfectly similiar codes not work?
我正在学习 C++ 中的函数,我在 Tutorialspoint 上看到了这段代码,它告诉我们是否
输入是一个整数或一个字符串。
Link 到 Tutorialspoint 文章:https://www.tutorialspoint.com/cplusplus-program-to-check-if-input-is-an-integer-or-a-string
这是原代码:
#include <iostream>
using namespace std;
//check if number or string
bool check_number(string str) {
for (int i = 0; i < str.length(); i++)
if (isdigit(str[i]) == false)
return false;
return true;
}
int main() {
string str = "sunidhi";
if (check_number(str))
cout<<str<< " is an integer"<<endl;
else
cout<<str<< " is a string"<<endl;
string str1 = "1234";
if (check_number(str1))
//output 1
cout<<str1<< " is an integer";
else
//output 2
cout<<str1<< " is a string";
}
原来的工作得很好,但我的代码要么只显示输出 1,要么只显示输出 2,无论你输入一个 int 还是一个字符串。
我的代码:
注意:我的代码是在在线编译器上编写的。 Link 给编译器:https://www.onlinegdb.com
#include <iostream>
using namespace std;
//the function which checks input
bool check(string s){
for(int i = 0; i < s.length(); i++)
if(isdigit(s[i]) != true)
return false;
return true;
}
//driver code
int main(){
string str = "9760";
if(check(str)){
//output 1
cout<<"Thanks! the word was " <<str;
}
else{
//output 2
cout<<"Oops! maybe you entered a number!";
}
}
执行我的程序时的输出:Thanks! the word was 9760
Link 到代码项目:https://onlinegdb.com/HkcWVpFRU
谢谢!
您正在检查该字符是否为数字,如果是则返回 false,您应该将其更改为
bool check(string s){
for(int i = 0; i < s.length(); i++)
if(isdigit(s[i])
return false;
return true;
}
旁注,如果你想检查错误,你可以 (!bool)
而不是 (bool != true)
它看起来更干净
我正在学习 C++ 中的函数,我在 Tutorialspoint 上看到了这段代码,它告诉我们是否 输入是一个整数或一个字符串。
Link 到 Tutorialspoint 文章:https://www.tutorialspoint.com/cplusplus-program-to-check-if-input-is-an-integer-or-a-string
这是原代码:
#include <iostream>
using namespace std;
//check if number or string
bool check_number(string str) {
for (int i = 0; i < str.length(); i++)
if (isdigit(str[i]) == false)
return false;
return true;
}
int main() {
string str = "sunidhi";
if (check_number(str))
cout<<str<< " is an integer"<<endl;
else
cout<<str<< " is a string"<<endl;
string str1 = "1234";
if (check_number(str1))
//output 1
cout<<str1<< " is an integer";
else
//output 2
cout<<str1<< " is a string";
}
原来的工作得很好,但我的代码要么只显示输出 1,要么只显示输出 2,无论你输入一个 int 还是一个字符串。
我的代码:
注意:我的代码是在在线编译器上编写的。 Link 给编译器:https://www.onlinegdb.com
#include <iostream>
using namespace std;
//the function which checks input
bool check(string s){
for(int i = 0; i < s.length(); i++)
if(isdigit(s[i]) != true)
return false;
return true;
}
//driver code
int main(){
string str = "9760";
if(check(str)){
//output 1
cout<<"Thanks! the word was " <<str;
}
else{
//output 2
cout<<"Oops! maybe you entered a number!";
}
}
执行我的程序时的输出:Thanks! the word was 9760
Link 到代码项目:https://onlinegdb.com/HkcWVpFRU
谢谢!
您正在检查该字符是否为数字,如果是则返回 false,您应该将其更改为
bool check(string s){
for(int i = 0; i < s.length(); i++)
if(isdigit(s[i])
return false;
return true;
}
旁注,如果你想检查错误,你可以 (!bool)
而不是 (bool != true)
它看起来更干净