2014-10-03 63 views
1

快乐的编码器!包含字符串的类 - 我可以跳过初始化它们吗?如果是,如何?

我有一个计划,今天尝试学习一些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 } 
}; 

既然我已经试过指针和诸如此类的东西(用谷歌搜索负载)我刚回到上面并决定问你如何真正做到这一点的十亿组合。

我的脑容量是完全捣碎,但考虑到上述伪代码,因为我敢打赌,这是不以任何方式正确...

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

+0

可以在C++ – BWG 2014-10-03 23:30:59

+1

随时更改该字符串应该不是真的需要做到这一点。也许你可以显示实际的代码? – BWG 2014-10-03 23:32:31

+0

我目前质疑在您的包含列表中可能缺少''。 – WhozCraig 2014-10-03 23:34:03

回答

5

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

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

Tag() : name(""), data(""), size(0) {} 
+1

你真的应该确保初始化至少'大小' – o11c 2014-10-03 23:33:45

+0

我只是混淆了我自己和你们我更多的想法。因为是的..我觉得太多了。但是,是的,你是对的,但不是,我有另一个问题,但BWG已经澄清了它,所以我认为我会删除这个帖子,如果可能的话,因为我的问题没有真正意义相比,我真正想要的是......我直到我问了它之后才知道...有点?虽然谢谢! – Simon 2014-10-03 23:45:49

相关问题