字符串到字符转换错误?

Sky*_*per -2 c++

尝试大约1小时后,我的代码因为以下原因而无效:

void s_s(string const& s, char data[10])
{
    for (int i = 0; i < 10; i++)
        data[i] = s[i];
}

int main()
{
    string ss = "1234567890";
    char data[10];
    s_s("1234567890", data);

    cout << data << endl;//why junk
}
Run Code Online (Sandbox Code Playgroud)

我根本不明白为什么cout在char数组后显示垃圾.有人可以解释为什么以及如何解决它?

Sca*_*nth 6

您需要null终止您的char数组.
std::cout.operator<<(char*)使用\0知道在哪里停下来.顺便说一下
你的char[]衰败char*.

你看这里.