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