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

Class containing strings - Can I skip initialising them and if so how?

本文关键字:初始化 如果可以 字符串 我可以 包含      更新时间:2023-10-16

快乐的程序员!

我计划今天尝试学习一些C++,所以我想我可以接受上一门课程的旧C作业,用C++做同样的事情。任务是读取音乐文件,从他们的ID3标签中检索数据,并根据他们的艺术家、专辑和曲目标题等将其分类到文件夹中……这并不重要,但你至少知道我要做什么。

所以我玩了一些布景,让我的程序接收一组指定不同歌曲的字符串,它会循环算法。

在下一步中,由于我试图复制旧C程序的行为,我陷入了困境,该程序是一个包含三个值的结构:

int size;
char *tag_name;
char *data;

但到目前为止,我还无法在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 }
};

由于我已经尝试了十亿个指针和whatnot(谷歌搜索负载)的组合,我只是回到上面,并决定问你如何真正实现这一点。

我的大脑完全混乱了,但考虑一下上面的psuedo代码,因为我敢打赌它在任何方面都不正确。。。

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

如果我正确理解你的问题,你的默认构造函数已经处理好了。您的std::string将初始化为空字符串""。您可以为指定不同的值该CCD_ 3。

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

Tag() : name(""), data(""), size(0) {}
相关文章: