我試圖連接兩個字符串到這樣一個新的(finalString): finalString =字符串1 +「&」 +字符串2C++動態分配初始值
首先,我分配的內存finalString,然後我使用strcat()。
finalString = new char[strlen(string1) + strlen(string2) + 2];
cout << finalString << endl;
finalString = strcat(finalString , string1);
finalString = strcat(finalString , "&");
finalString = strcat(finalString , string2);
cout << finalString << endl;
我會假設string1是「Mixt」,而string2是「Supermarket」。
輸出看起來是這樣的:
═════════════════řřřř //(which has 21 characters)
═════════════════řřřřMixt&Supermarket
我知道,如果我在使用「新字符」圓括號的字符串將被初始化爲0,我會得到期望的結果,但我的問題是爲什麼第一個輸出有21個字符,假設我只分配了17個字符。即便如此,爲什麼最後的字符串長度超過了初始分配大小(21> 17)呢?
在此先感謝!
爲什麼你不能使用['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)? – 2014-09-05 00:53:57
'finalString'從未初始化開始,所以這是未定義的行爲。你應該將第一個元素設置爲0(例如'finalString [0] = 0;') – 2014-09-05 00:54:02
當你說「字符串將被初始化爲0」時,你錯了。 – Barmar 2014-09-05 00:54:32