检查给定的字符串在C ++中是否为有效数字

概念

如果给定的字符串为数字,则应进行验证。

输入− 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

以上是 检查给定的字符串在C ++中是否为有效数字 的全部内容, 来源链接: utcz.com/z/350256.html

回到顶部