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++,所以我现在强迫自己完成这个.
如果我正确理解你的问题,你的默认构造函数已经解决了这个问题.你的std::strings将初始化为空字符串"".您可以随时为此分配不同的值string.
如果你真的想,你可以将默认构造函数更改为
Tag() : name(""), data(""), size(0) {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |