21xrx.com
2024-12-22 20:14:39 Sunday
登录
文章检索 我的文章 写文章
使用C++从字符串中提取数字
2023-07-09 05:16:07 深夜i     --     --
C++ 字符串 提取 数字

在C++编程中,有时需要从一个字符串中提取出其中的数字,这在字符串的处理中是非常常见的。下面是几种方法可以从字符串中提取数字:

1. 使用 string 类型的 substr 函数

string 类型中的 substr 函数可以从一个字符串中提取出指定长度的子字符串。假设我们需要从一个字符串中提取出前三个数字,可以这样写代码:


#include<iostream>

using namespace std;

string str = "abc123def456";

string num = str.substr(3, 3);

// num 等于 "123"

2. 使用 atoi 函数

atoi 函数可以将一个字符串转换成整数。它将忽略在字符串中的非数字字符。例如:


#include<iostream>

using namespace std;

char str[] = "abc123def456";

int num = atoi(str+3);

// num 等于 123

可以看到,这里我们需要将字符数组转换成 char* 类型,因为 atoi 函数只能处理 char* 类型的输入。

3. 使用 stringstream 类型

stringstream 类型可以将字符串当成流来处理,并从中提取出数字。例如:


#include<iostream>

#include<sstream>

using namespace std;

string str = "abc123def456";

stringstream ss(str);

string tmp;

int num;

while(!ss.eof()) {

  ss >> tmp;

  if(stringstream(tmp) >> num)

   break;

  tmp = "";

}

// num 等于 123

这里我们使用 stringstream 类型将字符串当成一个流处理。我们可以通过 while 循环来逐个提取出字符串中的单词,然后检查它是否为数字。如果是数字,就将它赋值给 num。注意,使用 stringstream 类型需要包含头文件

以上是三种从字符串中提取数字的方法,每种方法都有自己的特点和适用范围,具体使用时可以根据实际需要选择相应的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复