如何设置类的字符*成员?使用 strcat 或其他东西

How to set a char* member of a class? Using strcat or something else?

本文关键字:使用 成员 strcat 其他 字符 何设置 设置      更新时间:2023-10-16

我有一个非常简单的类,有一些char*成员。strcat是设定价值观的最佳方式吗?

class CImage {
public:
    CImage() {};
    char* Name;
};
void AddImage(const char* Name)
{
    CImage* img = new CImage();
    
    strcpy(img->Name, Name); // Is this correct or the best way?
}

强烈建议您放弃char *并使用std::string

char *作为成员,您需要自己为将内存(在构造函数中)和解除分配内存(在析构函数中)分配给指针而烦恼。此外,您需要管理异常,并在每次访问基础数据时对其进行手动管理。
此外,您还必须确保为您的班级遵循三条规则

简而言之,有太多的地方可以轻松射中自己的脚(或头部),因此最安全,最好的方法是使用std::string作为成员,省去所有麻烦。

您必须首先动态分配足够的内存来存储字符串,如下所示

img->Name = new char[strlen(Name) + 1];
strcpy(img->Name, Name);

如果这样做,则应使用delete[]释放内存

此外,您应该考虑在构造函数中解封字符串及其初始化。

但是,存储字符串的最佳方法是std::string