std :: string.assign(NULL)的行为?

时间:2013-11-11 01:26:30

标签: c++ std

有谁知道std :: string.assign(NULL)的行为是什么?未定义分配NULL(使用运算符)或从NULL构造。这同样适用于此功能吗?

2 个答案:

答案 0 :(得分:4)

标准在21.4.6.3第12段中说明了这一点:

  

要求:s指向至少为traits :: length(s)+ charT的1个元素的数组。

在角色特征要求中,表62表示:

  

X :: length(p)std :: size_t产生:最小的i,使得X :: eq(p [i],charT())为真。线性

这意味着traits::length()将取消引用s,因此s不能是指向null的指针。你得到了不确定的行为。

答案 1 :(得分:1)

从NULL“C字符串”分配C ++字符串是未定义的行为,因为空指针实际上根本不指向C字符串。我找不到任何引用说std :: string应该检查NULL - 你需要自己做。