要將一個C++的string賦值給一個char數組,可以使用string的成員函數c_str()來獲取一個指向字符數組的指針,并將其賦值給char數組。
下面是一個示例代碼:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
char arr[20];
// 使用c_str()函數將string賦值給char數組
std::strcpy(arr, str.c_str());
std::cout << arr << std::endl;
return 0;
}
這段代碼將string對象str賦值為"Hello, world!",然后使用c_str()函數將str轉換為一個const char*類型的指針,然后使用strcpy()函數將c_str()函數返回的指針所指向的字符串復制到char數組arr中。最后,輸出arr的內容。
注意,char數組的長度應該足夠大以容納string對象的內容和空字符’\0’。不過,在C++11中,也可以使用string的成員函數copy()來將string復制到char數組中,這樣可以避免緩沖區溢出的風險。示例如下:
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
char arr[20];
// 使用copy()函數將string賦值給char數組
str.copy(arr, sizeof(arr));
// 將最后一個字符設置為'\0',以表示字符串的結束
arr[str.size()] = '\0';
std::cout << arr << std::endl;
return 0;
}
這段代碼和前面的示例相似,但使用了string的成員函數copy()來避免緩沖區溢出的風險。在調用copy()函數之后,需要手動將最后一個字符設置為’\0’,以表示字符串的結束。