21xrx.com
2024-12-22 22:10:17 Sunday
登录
文章检索 我的文章 写文章
C++中如何提取字符串中的数字?
2023-06-28 18:56:14 深夜i     --     --
C++ 提取 字符串 数字

在C++中,字符串是一种常见的数据类型。但是,在我们处理字符串时,经常需要从字符串中提取数字,以进行一些数学或统计计算。那么在C++中,如何提取字符串中的数字呢?下面是一些实现方法。

1. 使用stringstream类

stringstream类是C++标准库中的一个类,可以将不同类型的数据转换成字符串。我们可以使用stringstream类中的方法来提取字符串中的数字。具体方法如下:


#include <iostream>

#include <sstream>

#include <string>

using namespace std;

int main() {

  string str = "a123b45c";

  stringstream ss;

  ss << str;

  string temp;

  int sum = 0;

  while (!ss.eof()) {

    ss >> temp;

    if (stringstream(temp) >> sum) {}

    temp = "";

  }

  cout << "sum = " << sum << endl;

  return 0;

}

2. 使用正则表达式

C++中提供了 库,可以使用正则表达式来匹配并提取字符串中的数字。


#include <iostream>

#include <regex>

#include <string>

using namespace std;

int main() {

  string str = "a123b45c";

  regex pattern("[\\d]+");

  smatch result;

  int sum = 0;

  while (regex_search(str, result, pattern)) {

    for (auto it = result.begin(); it != result.end(); it++) {

      sum += stoi(*it);

    }

    str = result.suffix().str();

  }

  cout << "sum = " << sum << endl;

  return 0;

}

3. 使用循环遍历字符串

我们也可以通过循环遍历字符串中的每一个字符来提取数字。


#include <iostream>

#include <string>

using namespace std;

int main() {

  string str = "a123b45c";

  int sum = 0;

  string temp = "";

  for (int i = 0; i < str.length(); i++) {

    if (isdigit(str[i])) {

      temp += str[i];

    } else {

      if (temp != "") {

        sum += stoi(temp);

        temp = "";

      }

    }

  }

  if (temp != "") {

    sum += stoi(temp);

  }

  cout << "sum = " << sum << endl;

  return 0;

}

以上就是C++中几种提取字符串中的数字的方法。不同的方法适用于不同的情况,我们可以结合自己的需要来选择最合适的方法。

  
  

评论区

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