如果给定的字符串为数字,则应进行验证。
输入− str =“ 12.5”
输出-真
输入-str =“ def”
输出-错误
输入− str =“ 2e5”
输出-真
输入-10e4.4
输出-错误
我们必须在代码中处理以下情况。
我们必须忽略开头和结尾的空格。
我们必须忽略'+','-'和'。在开始时。
我们必须确保字符串中的字符属于{+,-,。,e,[0-9]}
我们必须确保没有“。” 在“ e”之后。
数字应在点字符“。”之后。
我们必须确保字符“ e”后跟“ +”,“-”或数字。
// C++ program to check if input number //是有效数字 #include <bits/stdc++.h> #include <iostream> using namespace std; int valid_number1(string str1){ int i = 0, j = str1.length() - 1; while (i < str1.length() && str1[i] == ' ') i++; while (j >= 0 && str1[j] == ' ') j--; if (i > j) return 0; if (i == j && !(str1[i] >= '0' && str1[i] <= '9')) return 0; if (str1[i] != '.' && str1[i] != '+' && str1[i] != '-' && !(str1[i] >= '0' && str1[i] <= '9')) return 0; bool flagDotOrE = false; for (i; i <= j; i++) { //如果任何字符不属于 //{digit,+,-,。,e} if (str1[i] != 'e' && str1[i] != '.' && str1[i] != '+' && str1[i] != '-' && !(str1[i] >= '0' && str1[i] <= '9')) return 0; if (str1[i] == '.') { if (flagDotOrE == true) return 0; if (i + 1 > str1.length()) return 0; if (!(str1[i + 1] >= '0' && str1[i + 1] <= '9')) return 0; } else if (str1[i] == 'e') { flagDotOrE = true; if (!(str1[i - 1] >= '0' && str1[i - 1] <= '9')) return 0; if (i + 1 > str1.length()) return 0; if (str1[i + 1] != '+' && str1[i + 1] != '-' && (str1[i + 1] >= '0' && str1[i] <= '9')) return 0; } } return 1; } //驱动程式码 int main(){ char str1[] = "0.1e10"; if (valid_number1(str1)) cout << "true"; else cout << "false"; return 0; }
输出结果
true