c++ - 在结构中初始化一个字符串对象

标签 c++ string

我有一个看起来像这样的结构:

typedef struct {
    int a;
    //other fields
    string s1;
    string s2;
} strMyStruct;

在下面的代码中,append() 方法将崩溃,因为字符串对象 x1.s1没有 build 。

strMyStruct x1;
memset(&x1, 0, sizeof(x1));
x1.a = 100
x1.s1.append("....");

我可以像new (x1.s1) string;那样做新的布局来解决它, 但它太麻烦了,我无法完全控制 strMyStruct 的结构:有人可能会添加另一个字符串作为这个结构的字段并开始使用它并遇到崩溃问题,直到他记得做放置新技巧。

真的希望字符串类在memset(&x1, 0, sizeof(x1)); 完成初始化时能够正确处理它.这有什么技巧吗?

最佳答案

您可以使用统一初始化来默认构造对象。

strMyStruct x1{};

这将默认初始化该对象的成员。按照您编写的方式,变量已声明但未初始化。您还可以使用此语法对结构进行值初始化。

strMyStruct x2{5, "foo", "bar"};

关于c++ - 在结构中初始化一个字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403870/

相关文章:

c++ - 如何将 2 个不同的 QTextEdit 值显示到 QLabel 中

c++ - 使用 C++ 读取 Lua 表并放入 JSON 对象

c++ - 如何在大数字中插入空格以使其更具可读性?

Java:更改预填充的字符串数组列表中的元素

javascript - 如何使用 Javascript 获取 URL 字符串的一部分?

C++ 避免 const 和非常量访问的代码重复

c++ - 如何检测桌面应用程序是否已被修改?

c++ - 使用 WinApi 函数计算文件中的数字

c# - 无法将 FileInfo.Name 项从 string[] 添加到 List<string> 字段

java - 从java中的另一个字符串中删除字符串