MFC CString “=”运算符重载了,这要怎么改,这个要怎么改,显示运算符重载了
str = str + _T("你的字符串");
不知道你这个问题是否已经解决, 如果还没有解决的话:对于问题中提到的修改CString类的“=”运算符重载,需要在CString类外部重新定义“=”运算符以更改其默认行为。具体步骤如下:
class MyString{
public:
MyString(const char* str)
{
m_len = strlen(str);
m_str = new char[m_len+1];
strcpy(m_str, str);
}
MyString(const MyString& myStr)
{
m_len = myStr.m_len;
m_str = new char[m_len+1];
strcpy(m_str, myStr.m_str);
}
~MyString()
{
delete[] m_str;
m_str = NULL;
}
char* c_str(){ return m_str;}
int length(){ return m_len;}
MyString& operator=(const MyString& myStr)
{
if(this != &myStr)
{
delete[] m_str;
m_len = myStr.m_len;
m_str = new char[m_len+1];
strcpy(m_str, myStr.m_str);
}
}
private:
char* m_str;
int m_len;
};
class CMyString : public CString{
public:
CMyString(const char* str):CString(str){};
CMyString(const CString& cstr):CString(cstr){};
CMyString& operator=(const CMyString& myStr)
{
*this = MyString(myStr).c_str();
return *this;
}
};
CMyString str("Hello");
CMyString str2("World");
str = str2;
std::cout << str.GetString() << std::endl;
这将输出“World”。
如果修改后还是没有生效,可以考虑清除注册表的缓存,具体步骤见参考资料中的段落2。
L"字符串" 或者_T("字符串")