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*类型的字符串。
以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!