关于string中 size()的不解
关于string中 size()的疑惑
string s("1");
s=s+"\0";
s=s+"23";
此时,s.size()=3
string s("1");
s=s+'\0';
s=s+"23";
此时,s.size()=4
string s("1");
s=s+"\023";
此时,s.size()=2
为什么会这样?求各位大牛解答~~~
------解决思路----------------------
1、"\0", 字符串长度为0的字符串指针,s.size()=3 一切都正常
2、‘\0’,就是null,0,估计是string库重载+号函数的bug,把0算进去了
3、"\023",\表示输出后面的数字,023表示八进制数,等于19,所以"\023"表示ascii码为19的一个字符。
------解决思路----------------------
string s("1");
s=s+"\0";
s=s+"23";
此时,s.size()=3
string s("1");
s=s+'\0';
s=s+"23";
此时,s.size()=4
string s("1");
s=s+"\023";
此时,s.size()=2
为什么会这样?求各位大牛解答~~~
------解决思路----------------------
1、"\0", 字符串长度为0的字符串指针,s.size()=3 一切都正常
2、‘\0’,就是null,0,估计是string库重载+号函数的bug,把0算进去了
3、"\023",\表示输出后面的数字,023表示八进制数,等于19,所以"\023"表示ascii码为19的一个字符。
------解决思路----------------------
string (1)
string operator+ (const string& lhs, const string& rhs);
c-string (2)
string operator+ (const string& lhs, const char* rhs);//连接一个C字符串成新的字符串,“\0"表示空串,所以没有加任何东西
string operator+ (const char* lhs, const string& rhs);
character (3)
string operator+ (const string& lhs, char rhs); //连接一个字符成新的字符串,'\0' 是一个字符,合法
string operator+ (char lhs, const string& rhs);