一篇文章弄懂string和cstring的相互转化,以及字符串到数值的转化

cstring就是char数组,string是stl中定义的数据结构,二者可以相互转化,另外我们经常需要从字符串中提取出数字,下面一一介绍。

cstring -> string

cstring的历史早于string,所以它cstring本身当然不会有方法可以直接转化为string,但是string却可以用cstring来初始化或者调用构造函数

string str(cstr)

string -> cstring

中定义了一个成员函数 c_str,可以将一个string变量转换成cstring,返回的是一个const char指针,但是cstring定义完成后就不能随便赋值了,只能用strcpy

char cstr[100];
string str="sdhfs";
memcpy(str, str.c_str());

cstring ->数值

<cstdlib>中定义了两个函数atoi(c_str),atof(c_str),分别将cstring转化成int和double类型

string ->数值

<string>中有两个函数stoi(str),stod(str),分别将string转化成int和double类型,注意这两个函数不是string的成员函数。

测试程序

#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
int main(){
    char c_str[100]; 
    string str;
    cout<<"Please input a cstring:"<<endl;
    scanf("%s",c_str);
    str=string(c_str);
    cout<<"The converted string is:"<<endl;
    cout<<str<<endl;

    cout<<"Please input a string:"<<endl;
    cin>>str;
    strcpy(c_str,str.c_str());
    cout<<"The converted cstring is:"<<endl;
    printf("%s\n",c_str);

    scanf("%s",c_str);
    cout<<atoi(c_str)<<endl;
    cout<<atof(c_str)<<endl;

    cin>>str;
    cout<<stoi(str)<<endl;
    cout<<stod(str)<<endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值