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

作者&投稿:枞鸦 (若有异议请与网页底部的电邮联系)
C++中怎样把一个字符串数组中的数 转换成整形 数据 如:string s=“1234” 然后转换成int n=1234~

可以直接用atoi这个函数
#include "iostream"
using namespace std;
int main()
{
string s="1234";
int n;
n=atoi(s.c_str()); //string对象转成char *,再调用atoi函数
cout<<n<<endl;

}

C++中可以使用库函数atoi:
一、函数名:atoi
二、函数声明:
int atoi(const char *nptr);
三、头文件:
C语言中用stdio.h。
C++中用cstdio。
四、功能:
将字符串nptr中的字符转成数字并返回。具体过程为:
参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。否则,返回零。
五、参数:
nptr, 要转换的字符串。如果为NULL会出错。
六、返回值:
转换后的整型数值。
七、示例代码:
#include
#include
using namespace std;
int main()
{
const char *str = "1234";//要转换的字符串
int r = 0;//转换结果

r = atoi(str);//执行转换

cout << "result is " << r << endl;//输出结果

return 0;
}

可以先使用正则表达式识别出数字,然后再使用库函数进行类型转换,将识别出的字符串转换为数字类型,库函数如下(一小部分,在 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; //打印}
  •    



CAD中如何将一张图纸插到另一张CAD图纸中
但需要注意两张图中是否存在同名图块的现象,当出现图块同名冲突时,如果两种图块形式不同,建议用重命名(rename)将其中一个图块重命名。2、利用设计中心插入其他图纸中图块。如何把多张cad图纸放在一起 1、要实现这个操作,需要用到【插入块】命令,要合并图中两张图纸,先单击“插入”的命令按钮。...

excel中如何把一列内容相同的数据后的单元格合并到一个单元格
1、首先建立一个辅助列,命名为“结果”(名字神马的都无所谓啦~)在C2单元格输入公式=IF(A2=A3,B2&","&C3,B2)。向下填充至表的最后一行。2、此时可以发现,每个省份第一次出现的那行,显示的是这个省份出现过的所有城市用逗号连接起来的文本。这些文本恰恰是我们想要的结果!3、将第三列复制,...

ppt中怎么把文字实现,点击一下鼠标,出来一些字?
1、打开你需要操作的PPT课件,然后选择需要操作的文字,点击上方的“动画”按钮。2、在动画的窗口中,选择点击一款你自己喜欢的动画,在这里以任意一个动画为例。3、选择需要操作的文字,还是在动画界面,然后将开始后的选项更改为“单击时”。同时可以在下方设置它持续的时间、延迟的时间等。这样就实现...

如何在EXCEL表中把一个20位数中间的2个数字替换成另外2个数字?_百度...
在EXCEL表中把一个20位数中间的2个数字替换成另外2个数字可使用REPLACE函数实现。方法步骤如下:1、打开需要操作的EXCEL表格,在空白单元格中输入函数=REPLACE(,然后点击需要替换的文本所在单元格入A1。2、继续编辑输入函数,10,2,"88"),回车完成=REPLACE(A1,10,2,"88")的编辑输入。【函数执行结果...

...的一列数据复制到另外一个SHEET中?用公式怎么实现
sheet2:sheet3:=INDEX(Sheet2!B$1:B$999,SMALL(IF(Sheet2!$B$1:$B$999<>"尽心地",ROW($1:$999),4^8),ROW($A1)))&""数组公式,按ctrl+shfit+enter产生花括号。

如何把一张PPT插入另一个PPT中
2、打开其中一个PPT(A)。3、单击上面的工具菜单栏【插入】-【新建幻灯片】-【重用幻灯片】。4、在弹出的重用幻灯片那一栏里添加幻灯片B,可以输入名字搜索,也可以单击【浏览】按文件目录查找幻灯片B。5、找到了添加的幻灯片,一定要勾选下面的保留源格式,这是最重要的一步,可以实现保留原来的模板...

SAP系统中怎么把一个工厂的物料导到另一个工厂?比如把1500工厂的物料导...
t-code:mm01 . 在页面上copy from 中填入你要导的物料。然后按enter 注意:因为物料中基本资料是公用的,所以请不要选择basic data1 和data2 view。

excel如何把其中一列设置成可选的
在 Excel 中,可以通过下拉列表来实现将某一列设置为可选的,具体操作步骤如下:1. 在需要设置为可选列的单元格下面,输入下拉列表的选项值。可以在同一列的其他单元格中输入,也可以在其他列的单元格中输入。2. 选中设置为可选列的单元格。例如,如果需要将 A 列设置为可选列,就在 A 列中...

如何把一个excel文件复制成好几个
1. 首先是可以生成多个副本格式。2. 原因是Excel使用VB Editor可以方便地编写宏(Macro),用来实现自动化操作,其中复制工作表生成多副本格式的操作也可以被自动化操作实现。3. 另外,在Excel中也可以使用“复制”和“粘贴”快捷键来复制工作表,再通过修改复制的工作表来生成多个副本格式,这样也可以实现...

EXCEL表用函数如何实现一个三位数中的每一位数与另一个三位数每一位数...
如图,C1公式为:=IF(OR(LEN(A1)<>3,LEN(B1)<>3),"字符数量不符",IF(OR(ISNUMBER(FIND(MID(A1,{1,2,3},1),B1))),"有相同字符","无相同字符"))注意,这是一条数组公式:如果你的Office版本低于 微软 office 2021 ,那么把公式输入到C1以后,必须按 Shift+Ctrl+回车 三个键退出单元...

高邮市15960009793: C++中假设有一个string里有几个数字,怎么把特定数字提取出来 -
鬱屈狗皮: 用string的迭代器来遍历这个字符串中的每个字符,如果是指定的数字那么就取出来,如果不是把迭代器++ 指向下一个.

高邮市15960009793: C++怎么从一行字符串中提取想要的数字,如m=45.5,D=0.15494,l=0.89989,A=1.803,C=0.161,提前45.5等数字 -
鬱屈狗皮: C++有很多从字符串中提取数值的办法,不同类型的程序、不同的开发环境都有不少办法.比较通用(但格式比较严格)的,是sscanf函数,从一个字符串中格式化提取整数、浮点数都没有问题.比如:char s[] = "m=45.5,D=0.15494"; double m,d; sscanf(%*[^=]=%f,D=%f",&m,&d);

高邮市15960009793: C++,从字符串中提取数字 -
鬱屈狗皮: int main() { char source[] = "OBD:$AT_SETDEVICEID1234560123456789 Device ID:1234560123456789 return this: ACK_OK:1234560123456789"; char delim[64] = "ACK_OK:"; char *temp; float freq; temp = strstr(source,delim); freq = atof(temp); printf("delim = %s, temp = %s, freq = %.1f", delim, temp, freq); }

高邮市15960009793: C++,变换字符串中的数字 -
鬱屈狗皮: 使用sprintf函数,可以很方便的把数字打印到字符串里面.. 我写了一个DEMO可以完成你的要求,代码如下:(很简单,所以没注释) 撸码辛苦,希望采纳. #include <iostream> #include <cstdio> #include <stdlib.h> #include <cstring>using ...

高邮市15960009793: C++提取字符串里面的数字 -
鬱屈狗皮: #include <iostream>#include <string> using namespace std; int main() { string s = "chr4,+77311909,25M,1;chr2,+63439874,25M,1;chr10,-58952431,25M,1;chrX,-120369984,25M,1;chr13,-58752466,25M,1;chrX,-126676818,25M,1;"; int value = ...

高邮市15960009793: 怎样将字符串中的数字提取出来?用c++ -
鬱屈狗皮: #include int main() { char str[2000] ; int n[2000] ; char *p ; p = str ; int j =0 ; scanf("%s",str) ; for(int i = 0; i{ if(*p >= 48 && *p{ n[j] = str[i] ; j++ ; } } for(i = 0; i{ printf("%d",n[i]) ; } return 0 ; }

高邮市15960009793: c++将字符串中的数字提取出来变为数字 -
鬱屈狗皮: #include <iostream.h> int main() {char a[50]="1ab2cd3ef45g";char b[50];int cnt_index=0,cnt_int=0;//cnt_int 用于存放字符串中的数字.//cnt_index 作为字符串b的下标. for(int i=0;a[i]!='\0';++i) //当a数组元素不为结束符时.遍历字符串a.{if(...

高邮市15960009793: c++ 怎样提取一个字符串中的连续数字并放到另一个数组中保存? 急! -
鬱屈狗皮: char str_example[] = "a123x456__17960?302ab5876"; char* p_str = str_example; int n = strlen(str_example); int a[100] = { 0 }; int cout1 = 0; int j = 0; for (int i = 0; i < n;) { int sum = 0; while(isdigit(*p_str)) { sum = sum*10+(*p_str++-'0'); i++; } a[i] = ...

高邮市15960009793: C++中怎么把一个数字连接到一个字符串中,谢谢 -
鬱屈狗皮: 先要将数字转换为字符,用函数itoa(),然后用strcat()函数将转换后的字符合并到另一个字符数组中,举例如下:#include <iostream> #include <string>using namespace std;int main() {char str[30] = "Hello, good morning!";int year = 2010;char ayear[4]; itoa(year, ayear, 10); strcat(str, ayear);cout<<str<<endl; return 0; }

高邮市15960009793: c++中如何将string中数字转换成整型的 -
鬱屈狗皮: 1、方法一:c++11中string中添加了下面这些方法帮助完成字符串和数字的相互转换. #include <iostream>#include <string>using namespace std;int main() { cout << stof("123.0") <<endl; size_t pos; cout << stof("123.01sjfkldsafj",&pos) <<...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网