为什么输出字符数组到控制台时会得到垃圾值?

cha*_*rhy 1 c++

当我输出我的数组时,我总是得到像这样的'Íýýýý«««««««««îþþþ'的垃圾值.我究竟做错了什么?

void func()
{
    const int size = 100;
    char * buffer = new char[size];
    for(int i=0; i<size; i++)
        buffer[i] = ' ';

    cout<<buffer;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用for循环输出缓冲区,则没有垃圾值.

Sca*_*nth 7

因为你没有null终止你的缓冲区,std::cout.operator<<(char*)将尝试查找\0作为其终止字符.

正如评论中指出的那样,随意将其附加\0到缓冲区的末尾:).