要将一个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’,以表示字符串的结束。