C++中string类size
阿神
阿神 2017-04-17 13:50:54
0
4
532

str.size() 输出结果不一样

str += 'a' + 'a';//报错

阿神
阿神

闭关修行中......

全部回复(4)
迷茫

这是因为:前者先做'

大家讲道理

这里是char类型,不是常量字符串,首先根据优先级,会先计算后面的'0'+'a',对于char类型,相加还是一个char类型('a'),所以+=char类型,实际只append了一个字符。

    ¦ /**
    ¦  *  @brief  Append a character.
    ¦  *  @param c  The character to append.
    ¦  *  @return  Reference to this string.
    ¦  */
    ¦ basic_string&
    ¦ operator+=(_CharT __c)
    ¦ {
    this->push_back(__c);
    return *this;
    ¦ }
左手右手慢动作

发代码的时候请不要发截图。

这是因为(1)运算符优先级不同,+高于+=;(2)加法的操作数(operand)不同。

s += '
s += ('
s = s + ('
char tmp = '
s += '
std::string tmp = s + 'rrreee';
s = tmp + 'a';
'; s += 'a';
' + 'a'; s += tmp;
' + 'a');
' + 'a');
' + 'a';

等价于

rrreee

类似于

rrreee

等价于

rrreee

两个char类型的变量(字符)做加法,相当于把两个字符对应的数值相加,所以'

黄舟

'0' + 'a' 得到的是一个新的字符, 所以 你这样相当于:

char c = 'rrreee' + 'a';
s += c; // 只是添加了一个字符
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板