char 類型是c語言中常見的一個數據類型,string是c++中的一個,它的定義為 Strings are objects that represent sequences of characters. 由此可見string是一個char序列的對象,有時候我們經常需要混用這兩個數據類型,所以有些常見的錯誤還是需要避免的:
比如,string的append函數只能加const char類型的,而push_back函數可以加char類型的,也可以直接用 += 來添加char類型的,如果要同時添加兩個char, 比如 char a, char b, 則不能寫為 str += a + b, 只能老老實實寫成 str = str + a + b;
下面我們來看它們之間的相互轉換:
- char* to string
char *cStr = "C++"; std::string Str = std::string(cStr);
- string to char*
std::string str = "string"; const char *cstr = str.c_str();
由於cstr是const的,不能被修改,如果想要修改的話,可以另拷貝一份再修改:
std::string str = "string"; char *cstr = new char[str.length() + 1]; strcpy(cstr, str.c_str()); // do something here! delete [] cstr;