std::array<char,size>null是否终止?

以下代码片段是否安全?它调用了 std::string 的第四个构造函数,该构造函数接受一个指向空终止字符串的指针。问题是,我不确定word下面是否以空值终止。是吗?

std::array<char, 4> word{'a', 'b', 'c', 'd'};

int main()
{
    std::string p = word.data();
    return 0;
}

回答

std::array<char, size> null 是否终止?

它可以包含一个以空字符结尾的字符串。它不一定包含以空字符结尾的字符串。

std::array<char, 4> word{'a', 'b', 'c', 'd'};

此数组不包含空终止字符串。您可以判断,因为没有一个元素是空终止符。

std::string p = word.data();

该程序的行为未定义。

以下代码片段是否安全?

不。


如何使单词 null 终止。

这是一个例子:

std::array<char, 5> word{'a', 'b', 'c', 'd'};

或者,如果您想更明确:

std::array<char, 5> word{'a', 'b', 'c', 'd', ''};


以上是std::array&lt;char,size&gt;null是否终止?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>