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

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

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

阿神
阿神

闭关修行中......

全部回覆(4)
迷茫

這是因為:前者先做'

而後者append了兩個字元。

其實兩者的輸出應為:

ABCDa5
ABCDrrreeea6
因為

你貼的那個新產生的錯誤的原因是'a' = 97

97 + 97 = 194

超出了0-127這個ascii字符的範圍,所以從數值隱式轉換成字符報warning了

大家讲道理

這裡是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; // 只是添加了一个字符
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板