gpt4 book ai didi

c++ - 如何将 std::string 的值复制到 char 数组类型的结构成员

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:05 26 4
gpt4 key购买 nike

假设我有一个变量

std::string str; // initialized with some value

一个结构定义为:

struct test
{
public:
const char* name;
};

我知道这是可以做到的:

test t1;

t1.name = str.c_str();

但是这样会将变量str的地址存入t1.name

相反,我希望将 str 的值放入结构的一个 char 数组成员中,该结构应该与变量 str 具有完全相同的大小

有没有办法可以实现或者更好的设计

提前致谢!

最佳答案

But this will store the address of the variable str in t1.name

不完全是。 str.c_str() 不返回变量 str 的地址。它返回 str 所拥有的字符数组的地址。

Instead I want the values of str to put in a char array member of the structure

为此,该结构必须有一个char 数组成员。你的结构没有;它有一个指针成员。

char array member of the structure which should be of exact same size as variable str.

这是不可能的。字符串的大小是动态的,即它可能在运行时改变。成员数组的大小必须在编译时已知。

您可以改为动态分配一个数组。顾名思义,动态分配的大小可以在运行时确定。但是,必须手动释放动态分配,否则您的程序将泄漏内存。

or a better design

一种流行的动态分配设计模式是 RAII .标准库已经有一个用于字符串的 RAII 容器:std::string。因此,要将字符串复制到结构的成员中,一个好的设计是将字符串作为成员:

struct test {
std::string name;
};

test t1;
t1.name = str;

关于c++ - 如何将 std::string 的值复制到 char 数组类型的结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com