【类型转换】C++中char、char*、int、string相互转换

1、char转int与int转char
1.1、char转int:

char a = '1';
int b = a - '0'; // b = 1;

1.2、int转char:

int a = 1;
char b = a + '0'; // b = '1';

2、char*、char转string与strng转char*、char
2.1、char*、char转string:

char* ptr = "abcd";
string s(ptr); // s = "abcd";

char c = 'a';
string s2;
s2 += c; // s2 = "c";

2.2、strng转char*、char:

string s = "abc";
char* ptr = const_cast<char*>(s.c_str()); // ptr = "abc";

string s = "a";
char c = s[0]; // c = 'a';

3、int转string与string转int
3.1、int转string:

int a = 23;
string s = to_string(a); // s = "23";

3.2、string转int:

#include<cstring>
string s = "123";
int a = atoi(s.c_str()); // a = 123;
int b = stoi(s); // b = 123;

atoi()和stoi()的异同点:

  • 相同点:
    ①都是C++的字符处理函数,把数字字符串转换成int输出
    ②头文件都是#include
  • 不同点:
    ①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char类型的;
    ②stoi()的参数是const string
    ,不需要转化为 const char*;

学习链接:atoi()和stoi()的区别----数字字符串的处理

4、string转不同进制数(strtol)
函数原型:

long int strtol (const char* str, char** endptr, int base);

各参数含义:
str是要转换的字符
enptr是指向第一个不可转换的字符位置的指针:若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则不传回该指针。
base的基数,表示转换成为几进制的数

char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";
char * pEnd; // pEnd不为null
long int li1, li2, li3, li4;
li1 = strtol (szNumbers,&pEnd,10); // 2001
li2 = strtol (pEnd,&pEnd,16); // 6340800
li3 = strtol (pEnd,&pEnd,2); // -3624224
li4 = strtol (pEnd,NULL,0); // 7340031

参考资料:cplusplus官方资料
strtol 函数用法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值