要将一个C++的string赋值给一个char数组,可以使用string的成员函数c_str()来获取一个指向字符数组的指针,并将其赋值给char数组。
下面是一个示例代码:
#include#include 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#include 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’,以表示字符串的结束。