21xrx.com
2024-12-22 20:44:14 Sunday
登录
文章检索 我的文章 写文章
C++中提取字符串数字并求和方法
2023-07-11 04:48:00 深夜i     --     --
C++ 字符串 数字 提取 求和

C++作为一种常见的编程语言,其字符串处理功能非常强大。如果我们需要从一个字符串中提取出数字,并进行求和的操作,该怎么做呢?下面就来介绍一下C++中提取字符串数字并求和的几种方法。

方法一:使用stringstream

stringstream是C++中的一个库函数,可以将字符串中的数字转化为数值类型。我们可以使用该函数将字符串中的数字一个一个的读入,然后将读入的数字加起来,即可计算出字符串中所有数字的和。

示例代码如下:


#include <sstream>

#include <string>

int sumOfDigits(std::string str)

{

  std::stringstream ss;

  ss << str; // 将字符串读入stringstream

  int sum = 0;

  int num;

  while (ss >> num) // 从stringstream中读取数字,直到sstream为空

  {

    sum += num;

  }

  return sum;

}

方法二:使用正则表达式

C++中也可以使用正则表达式来提取字符串中的数字。使用正则表达式要比第一种方法麻烦一些,但是如果遇到比较复杂的字符串,正则表达式可能会更加便捷一些。

示例代码如下:


#include <regex>

int sumOfDigits(std::string str)

{

  std::regex reg("\\d+"); // 匹配一个或多个数字

  std::sregex_iterator it(str.begin(), str.end(), reg);

  std::sregex_iterator end;

  int sum = 0;

  while (it != end)

  {

    sum += std::stoi(it->str()); // 将匹配到的字符串转化为数字并累加

    ++it;

  }

  return sum;

}

方法三:手动提取数字

如果我们知道字符串中数字的具体位置,也可以手动提取出数字然后计算其总和。这种方法虽然效率较低,但是在某些情况下可能还是比较实用的。

示例代码如下:


#include <string>

int sumOfDigits(std::string str)

{

  int sum = 0;

  int cur = 0;

  int len = str.size();

  while (cur < len)

  {

    // 如果当前字符是数字,则将后面的数字一个一个的读入并累加

    if (isdigit(str[cur]))

    {

      int num = 0;

      while (cur < len && isdigit(str[cur]))

      {

        num = num * 10 + (str[cur] - '0');

        ++cur;

      }

      sum += num;

    }

    else

    {

      ++cur;

    }

  }

  return sum;

}

综上所述,C++中提取字符串数字并求和的方法有多种,我们可以根据具体的情况选择适合的方法来实现。无论使用哪种方法,只要操作正确,都可以达到我们想要的效果。

  
  

评论区

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