字符串是如何存储的
string ttt("A") ;
char *p = (char *)(&ttt);
Memo1->Lines->Add(*p) ;
Memo1->Lines->Add(*(p+1)) ;
Memo1->Lines->Add(*(p+2)) ;
Memo1->Lines->Add(*(p+3)) ;
运行结果如下:
255
195
210
119
毫无规律可言,字符串在内存中到底是怎么存储的?
[解决办法]
string是一个类,ttt的地址,并不是字符串存储的地址。
[解决办法]
String是对字符串的封装,打个比方,类似于:
class MyString {
public :
MyString();
char *c_str() { return m_pchBuf; }
.....
private :
char *m_pchBuf;
};
其中成员变量m_pchBuf才指向真正的字符串在内存中的位置,加入定义一个MyString变量
MyString a;
那么&a只是这个变量自身的位置,函数c_str()才返回字符串的位置。