C++中如何实现把一个字符串里数字的转换成整型

例如:把字符串100+100=200中的数字提取出来... 例如:把字符串100+100=200中的数字提取出来 展开
 我来答
李磊_1
推荐于2018-08-06 · TA获得超过299个赞
知道小有建树答主
回答量:337
采纳率:66%
帮助的人:118万
展开全部

可以先使用正则表达式识别出数字,然后再使用库函数进行类型转换,将识别出的字符串转换为数字类型,库函数如下(一小部分,在 stdlib.h 中定义):

_Check_return_                    _ACRTIMP double    __cdecl atof   (_In_z_ char const* _String);
_Check_return_ _CRT_JIT_INTRINSIC _ACRTIMP int       __cdecl atoi   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long      __cdecl atol   (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP long long __cdecl atoll  (_In_z_ char const* _String);
_Check_return_                    _ACRTIMP __int64   __cdecl _atoi64(_In_z_ char const* _String);

样例如下(注意要引入regex文件,iostream依你情况导入):

#include <regex>
#include <iostream> 


int main(int argc, char** argv)
{
// 输入字符串
std::string input("100+100=200");
// 匹配数字的正则表达式,如果要匹配小数,可设置为 "[0-9]+\\.[0-9]*",
// 如果还要匹配符号,可设置为 "[\\+-]?[0-9]+\\.[0-9]*"
std::regex reg("[0-9]+", std::regex::icase);
// 一个匹配结果。
std::smatch match;

std::string::const_iterator iter = input.begin();
std::string::const_iterator iterEnd = input.end();

// 匹配一个数字
while (std::regex_search(iter, iterEnd, match, reg))
{
// match[0].str() 获取到匹配结果字符串对象,如 string("100")
// .c_str 函数获取到字符串的 C 风格字符串,如: "100"
// 使用类型转换函数 atoi 将字符串转换为整数。
// 最后将获取到的整数输出。
std::cout << atoi(match[0].str().c_str()) << std::endl; 
// 设置下次搜索位置,一定不能省,不然死循环。
iter = match[0].second;
}
return 0;
}

运行结果:

司马刀剑
高粉答主

2018-07-31 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7337万
展开全部

方法有很多

其中一种是使用C++中的流

  • 声明字符串

  • 声明流

  • 字符串输出到流

  • 流输出到数字

  • 打印数字


  •    
  • #include <iostream>#include <string>#include <sstream>using namespace std;int main(){   string str="6666";//声明变量   stringstream ss;//声明流   ss<<str;    //字符串输出流   int nums;   ss>>nums;    //输入到数字   cout<<nums<<endl; //打印}
  •    
追问
那要是输入的字符串不是纯数字怎么办呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式