C++: char* 与 string类型转换

本文介绍了C++中如何进行char*到string以及string到char*的类型转换,包括直接赋值法、累加法以及使用c_str函数等方法。详细解释了不同转换方式的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++: char* 与 string类型转换

标签:C++ char* string 类型转换

by 小威威


char*属于<cstring>,string属于<string>
要实现二者的转换,并不全是简简单单暴力赋值,而是有特殊的方法。下面我将分别介绍char*类型转化为string类型与string类型转化为char*类型。

1.char*转化为string:

法一:直接赋值法(最为简便)。

char* cstr;
string* sstr;
sstr = cstr;

法二:累加法(此处没有法一简便,但是string转化为char*用这种思路更为简便)。

for (int i = 0; cstr[i] != '\0'; i++) {
    sstr += cstr[i];
}

string类型的字符串可通过累加的方式来添加字符的内容。

2.string 转化为 char*:

法一:循环赋值法(最为简便)。

for (int i =  0; i < strlen(cstr); i++) {
    sstr[i] = cstr[i];
}

法二:c_str函数法:

    string sstr;
    char *cstr1;
    const char *cstr2;
    cstr2 = sstr.c_str();
    int len1, len2;
    len1 = strlen(cstr1);
    len2 = strlen(cstr2);
    memcpy(cstr1, cstr2, (len1 > len2 ? len1 : len2));

因为c_str()函数返回的是const char*类型,所以必须要重新定义一个const char* 的字符串来接受c_str的返回值。然后再通过memcpy将const char*类型的字符串复制到char*类型的字符串。


以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值