gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:16:39 24 4
gpt4 key购买 nike

快乐的程序员!

我计划今天尝试学习一些 C++,所以我想我可以从以前的类(class)中学习旧的 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 }
};

因为我已经尝试了十亿种指针组合和诸如此类的东西(Google 搜索),所以我回到上面并决定问你如何实际完成这个。

我的脑子完全糊涂了,但请考虑上面的伪代码,因为我敢打赌它在任何方面都不正确......

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

最佳答案

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

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

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

关于c++ - 包含字符串的类 - 我可以跳过初始化它们吗?如果可以的话,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com