0

我有一个非常简单的类,有一些 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?
}
4

2 回答 2

11

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

作为char *成员,您需要自己为指针分配(在构造函数中)和释放内存(在析构函数中)。此外,您需要管理异常并在每次访问时手动管理底层数据。
此外,您还必须确保您的班级 遵循三原则。

简而言之,有太多地方可以很容易地射中自己的脚(或头),所以最安全和最好的方法是使用std::string会员并为自己省去所有麻烦。

于 2012-06-15T07:52:45.157 回答
4

您必须首先动态分配足够的内存来存储这样的字符串

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

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

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

然而,存储字符串的最佳方式是std::string

于 2012-06-15T07:53:23.260 回答