C++中char,string与int类型转换

本文详细解析了C++中char、string与int类型之间的转换方法,包括直接赋值、内置函数如c_str()、data()、copy()、atoi()、to_string()等的使用,以及stringstream流的应用。

C++中char,string与int类型转换是一个不太好记的问题,在此总结一下,有好的方法会持续更新。

1.char与string

char是基础数据类型,string是封装了一些操作的标准类,在使用上各有千秋。

1.1 char *或者char [ ]转换为 string时,可以直接赋值。

    string x;
    string y;
    char *ptr1 = "sakura";
    char ptr2[]= "waseda";
    x = ptr1;
    y = ptr2;

1.2 string转换为char*或者char[ ]时,有3种方法。

1.2.1 使用string内置c_str()函数。注意不直接赋值,因为string类对象最后会析构导致左值成为空指针。附加结束符\0

    string x = "waseda";
    char *ptr;
    strcpy(ptr,x.c_str());

1.2.2 使用string内置data()函数。不附加结束符\0

    string x = "waseda";
    char *ptr;
    strcpy(ptr,x.data());

1.2.3 使用string内置copy()函数。不附加结束符\0

    string str="waseda";
    char ptr[10];
    str.copy(ptr,5,0); 

2.char与int

2.1 char数字 转int ,直接减'0'就好。char数组则使用atoi,stringstream。

    char u = '3';
    int num0 = u-'0';
    char x[] = "223";
    char *k = "233";
    int num1 = atoi(x);
    int num2 = atoi(k);
//stringstream
    int num0;
    char x[10] = "233" ;
    stringstream ss;
    ss<<x;
    ss>>num0;

2.2 int 转char数字,直接加'0'。char数组可以使用atoi,sprintf,stringstream。

2.2.1 itoa函数windows平台独有,不通用。第三个参数为使用的进制。

    int num0 = 233;
    char x[10] ;
    itoa(num0,x,10);

2.2.2 sprintf函数

    int num0 = 233;
    char x[10] ;
    sprintf(x, "%d", num0);

2.2.2 stringstream,重复使用记得clear。

    int num0 = 233;
    char x[10] ;    
    stringstream ss;
    ss<<num0;
    ss>>x;

3.string与int

3.1 int 转string,有std内置to_string函数与stringstream流。

3.1.1 to_string

    string str ;
    int num=233;
    str = to_string(num);

3.1.2 stringstream,可以输出到string或者使用流的str()函数。

    int num = 233;
    string str ;
    stringstream ss;
    ss<<num;
    ss>>str;
    cout<<str<<endl;//第一种
    cout<<ss.str()<<endl;//第二种

3.2 string转int,有先转为char然后int的方法,std内置stoi与stringstream

3.2.1 使用c_str(),atoi()中转

    int num ;
    string str="233" ;
    stringstream ss;
    num = atoi(str.c_str());

3.2.2 stoi

    int num ;
    string str="233" ;
    stringstream ss;
    num = stoi(str);

3.2.3 stringstream

    int num0;
    string str = "233" ;
    stringstream ss;
    ss<<str;
    ss>>num0;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值