//method 1
std::string s;
s+='a' //This works perfectly
但
//method2
std::string s;
s="" + 'a';//This gives unexpected value
爲什麼第二個方法給出了意想不到的價值?從我讀過的字符串默認構造函數初始化字符串變量爲空字符串,如果沒有指定構造函數。 And s+='a'
應該與s=s+a
相同。那麼爲什麼方法2與方法1相同呢?
而就在同一個主題的多個查詢,如果我們不能與初始化字符文字,然後一個字符串,我們如何能夠賦予字給它一個char?
std::string s2='a'//gives error while compiling
而
std::string s2;
s2='a'//works perfect
從我個人理解是因爲字符串構造函數需要的類型(const char *)
的說法,我們不能用char變量初始化字符串變量。爲什麼分配時沒有這種限制?
'「foo」的'不是'的std :: string',它是一種*字符串文字*,這是'char',更多或更少的一個'字符常量*'的陣列。如果你想對它執行'std :: string'類型的操作,你必須先把它變成一個:'std :: string(「foo」)'。 – BoBTFish
BoBTFish是對的,試試'std :: string(「」)+'a'' – Steeve
增加警告等級。我敢打賭你會收到警告。 –