c++ - 在struct中初始化一个string对象(二)

标签 c++ string

<分区>

这是来自 question 的后续问题,我有一个像

这样的结构
struct {
    int a;
    //other fields
    string s1;
    string s2;
} strMyStruct;

如果对象是别人的 malloc() 并传递给我进行快速处理(在我负责的函数 myFunc 中),我将如何初始化所有成员。如何确保函数 myFunc 中的数字成员初始化为 0,字符串成员初始化为空字符串?

strMyStruct *p = (strMyStruct *)malloc(sizeof(x1));
myFunc(p);

更新 1

由于结构的成员可能会经常更改,我不希望我的代码引用任何单独的成员。

最佳答案

根据@BillLynch 的建议,您需要使用 placement new。您可以通过使用类似

的内容来使他的建议更安全
std::unique_ptr<strMyStruct, placement_deleter> uptr = new(p) strMyStruct;

placement_deleter 在哪里

struct placement_deleter {
   void operator()(strMyStruct *pointer) const {pointer->~strMyStruct()};
}

看看这是否有效...

关于c++ - 在struct中初始化一个string对象(二),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30404553/

相关文章:

c++ - 防止鼠标滚轮滚动控件

c++ - C++中多线程的困惑

c# - 字符串的按位运算 - 1440 个字符长度

c++ - 这两种添加字符串的情况有什么区别?

java - 创建的 String 对象是否因 char[] 和编译时间分辨率而不同?

c++ - 带字符串或字符的动态分配(数组)

c++ - 使用虚拟保护方法继承

c++ - 将 UTF-16(Windows 上的 wchar_t)转换为 UTF32

c++ - 我可以将键值对的内存映射文件重新解释为映射以便对它们进行排序吗?

java - Java中如何读取JSON?