Char指针给了我一些非常奇怪的字符

use*_*625 1 c++

当我运行示例代码时,wordLength为7(因此输出7).但是我的char数组最终得到了一些非常奇怪的字符.

wordLength = word.length();

cout << wordLength;

char * wordchar = new char[wordLength]; //new char[7]; ??

for (int i = 0; i < word.length(); i++) //0-6 = 7
{
    wordchar[i] = 'a';
}

cout << wordchar;
Run Code Online (Sandbox Code Playgroud)

输出:7aaaaaaa²²²²||||||||||||||||||||||||||||||||||

期望的输出是:aaaaaaa ......背后的垃圾是什么?那是怎么结束的呢?

tao*_*ocp 5

你应该\0在最后添加wordchar.

char * wordchar = new char[wordLength +1];
//add chars as you have done
wordchar[wordLength] = `\0`
Run Code Online (Sandbox Code Playgroud)

原因是C字符串是空终止的.