21xrx.com
2025-04-15 01:44:24 Tuesday
文章检索 我的文章 写文章
C++提取字符串中的数字
2023-07-04 18:28:30 深夜i     11     0
C++ 字符串 数字 提取

在C++中,提取字符串中的数字是一种常见的编程任务。有时我们需要从字符串中提取数字,例如,计算一个算术表达式的结果、从一个文件中读取数字、或者处理含有数字的用户输入。在下面的文章中,我们将介绍如何使用C++来提取一个字符串中的数字。

首先,我们需要了解C++中的字符串和字符数组。字符串是由字符组成的数组,每个字符在字符串中都有一个位置。可以使用指针来访问字符串中的位置,也可以使用循环来遍历字符串中的每个字符。

在C++中,可以使用库函数isdigit()来判断一个字符是否是数字。isdigit()函数是一个标准库函数,它可以判断一个字符是否是ASCII码表中的数字字符(0-9)。如果是数字,函数将返回一个非零值,否则返回零。

例如,下面的示例代码可以遍历一个字符串并打印出字符串中的数字:

#include<iostream>
#include<ctype.h>
#include<string.h>
using namespace std;
int main() {
  char str[] = "The number is 123.";
  int len = strlen(str);
  
  for (int i = 0; i < len; i++) {
    if (isdigit(str[i])) {
      cout << str[i] << endl;
    }
  }
  return 0;
}

在此示例代码中,定义了一个字符串变量str,将要遍历这个字符串来查找数字字符。strlen()函数将返回这个字符串中的字符数。

在循环中,使用isdigit()函数来判断每个字符是否是数字字符。如果是数字,那么就将它打印输出。

以上代码输出如下:

1
2
3

但是,这种方法并不完美。因为假如需要提取的数字是一个多位数,就不能简单地输出单个字符。需要使用额外的步骤来合并字符,生成多位数。下面的示例代码提供了一个完整的解决方案,可以从任何字符串中提取数字,包括多位数。

#include<iostream>
#include<ctype.h>
#include<string.h>
using namespace std;
int main() {
  char str[] = "The numbers are 123 and 456.78";
  int len = strlen(str);
  string temp = "";
  
  for (int i = 0; i < len; i++) {
    if (isdigit(str[i])) {
      temp += str[i];
    } else if (temp != "")
      cout << temp << endl;
      temp = "";
    
  }
  
  if (temp != "")
    cout << temp << endl;
  
  
  return 0;
}

在此示例代码中,我们定义了一个字符串变量str,和一个空的字符串变量temp。temp变量用来暂时存储提取的数字,我们可以通过追加字符串的方式将所有数字字符合并到这个字符串中。

在循环中,遍历整个字符串,使用isdigit()函数来判断每个字符是否是数字字符。如果是数字字符,我们就将其追加到temp变量中;如果不是数字字符,而temp变量有存储的数字,那么就输出这个数字,然后清空temp变量。

在循环结束后,我们再次检查temp变量是否包含数字字符。 如果是,就输出这个数字。

以上示例代码输出如下:

123
456.78

这个简单的程序演示了如何使用C++来提取字符串中的数字。虽然它只是简单的程序,但是对于处理字符串中的数字,它提供了一个很好的起点。通过扩展这个程序,我们可以轻松地实现更复杂的任务,例如从一个包含多个数字的字符串中计算出所有数字的总和。

  
  

评论区

请求出错了