包含字符串的类 - 我可以跳过初始化它们,如果是,如何?

Sim*_*mon 1 c++ string dynamic class-members

快乐的程序员!

我有一个计划今天尝试学习一些C++,所以我想我可以从之前的课程中学习一个旧的C语言,并在C++中做同样的事情.作业是读取音乐文件并从ID3标签中检索数据,并根据他们的艺术家,专辑和曲目标题等对文件夹进行排序......这并不重要,但你至少知道我的目标.

所以我玩了一些套装,让我的程序收到一个字符串数组,指定不同的歌曲,它将循环算法.

在下一步中我遇到了困难,因为我试图复制旧C程序的行为,这是一个包含三个值的结构:

int size;
char *tag_name;
char *data;
Run Code Online (Sandbox Code Playgroud)

但到目前为止,我一直无法在C++中重新创建这种动态行为,我希望只定义成员但未初始化,因为我希望以后能够更改此数据.从技术上讲,我可以在创建标记之前从文件中获取数据,然后为构造函数提供初始值并完成它.但我能以我想要的方式做到吗?

class Tag {
 public:
   std::string name;
   std::string data;
   int size;

   Tag() {}
   Tag(std::string n, std::string d, int s) : name(n), data(d), size(s) { }
   void setData(std::string data) { this.data = data }
};
Run Code Online (Sandbox Code Playgroud)

由于我已经尝试了十亿种指针和诸如此类的东西(Google搜索加载),我刚刚回到上面并决定问你如何实现这一目标.

我的脑筋是完全捣碎的,但考虑上面的伪代码,因为我敢打赌它在任何方面都不正确......

所以我的问题是:如何定义一个类,以便为成员名称和数据获得动态字符串分配?我几乎想要使用一些好的旧char*但我尝试这个的重点是学习一些C++,所以我现在强迫自己完成这个.

Cor*_*mer 5

如果我正确理解你的问题,你的默认构造函数已经解决了这个问题.你的std::strings将初始化为空字符串"".您可以随时为此分配不同的值string.

如果你真的想,你可以将默认构造函数更改为

Tag() : name(""), data(""), size(0) {}
Run Code Online (Sandbox Code Playgroud)