我试图连接两个字符串到这样一个新的(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