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 = ; cstr[i] != '\0'; i++) {
sstr += cstr[i];
}
string類型的字元串可通過累加的方式來添加字元的内容。
2.string 轉化為 char*:
法一:循環指派法(最為簡便)。
for (int i = ; 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*類型的字元串。
以上内容皆為本人觀點,歡迎大家提出批評和指導,我們一起探讨!