2个回答
展开全部
可以先使用正则表达式识别出数字,然后再使用库函数进行类型转换,将识别出的字符串转换为数字类型,库函数如下(一小部分,在 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;
}
运行结果:
展开全部
方法有很多
其中一种是使用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; //打印}
追问
那要是输入的字符串不是纯数字怎么办呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询