c++

c++中string怎么赋值给char数组

小亿
713
2023-11-14 11:36:16
栏目: 编程语言

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

0
看了该问题的人还看了