字符串和数字之间的相互转换总结

时间:2022-02-20 15:15:48

最近刷题有用到字符串和整形数字之间的转化,特地总结一下。

int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。

string前后加上双引号,告诉编译器把它当成一串字符来解释。

注意:对于字符,需要区分字符和字符表示的数值。比如:char a = 8;char b = '8',a表示第8个字符,b表示字符8,是第56个字符。

一、字符串转化为整数

1、可以使用的函数stoi(),stod(),stoll()等,总结表格如下:

atof 将字符串转换成浮点型数
atoi 将字符串转换成整型数
atol 将字符串转换成长整型数
strtod 将字符串转换成浮点数
strtol 将字符串转换成长整型数
strtoul 将字符串转换成无符号长整型数
toascii 将整型数转换成合法的ASCII 码字符
toupper 将小写字母转换成大写字母
tolower 将大写字母转换成小写字母

举例:

string str = "3.1415926";
cout<<str<<endl;
double d = stod(str);
cout<<d<<endl;
2、 符串转数字:使用sscanf()函数,举例如下:

char str[]="1234321";
int a;
sscanf(str,"%d",&a);
/////////////////////////////
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
////////////////////////////
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16进制转换成10进制
3、 使用stringstream,举例如下:

string s = "17";
stringstream ss;
ss<<s;
int i;
ss>>i;
cout<<i<<endl; // 17


二、整数转化为字符串

1、使用sprintf(),举例如下:

char str[10];
int a=1234321;
sprintf(str,"%d",a);
cout<<str<<endl;
2、使用itoa(int to string),char* itoa(int num,char*str,int radix),举例如下:

int a = 10;
char ch[10];
itoa(a,ch,10);
cout<<ch<<endl;
3、使用stringstream, 举例如下:
int a = 10;
stringstream s;
s<<a;
string s1 = s.str();
cout<<s1[0]<<" "<<s1[1]<<endl;
4、使用to_string() 举例如下:

int ii = 1234;
string sss = to_string(ii);
cout<<ii<<" "<<sss[0]<<" "<<sss[1]<<endl;


参考资料:

C++ int与string的转化

std::to_string

function:std::to_string

各种语言中字符串转换为数字 数字转换为字符串