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

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

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

by 小威威


char*属于,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*类型的字符串。


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


你可能感兴趣的:(C++)