- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个变量
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/
我是一名优秀的程序员,十分优秀!