有谁知道std :: string.assign(NULL)的行为是什么?未定义分配NULL(使用运算符)或从NULL构造。这同样适用于此功能吗?
答案 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 - 你需要自己做。