在c ++ 11标准下是否存在以下未定义的行为:
(试图获取字符串的内部缓冲区的地址)
std::string s;
... = &s[0];
Run Code Online (Sandbox Code Playgroud)
例如什么时候s是空的?
我知道我们有c_str(), data(),但不过.
这是来自与某人的辩论,这不是为了促进hacky编码
在C++ 11中,代码定义明确,但可能无法达到预期效果.确切的影响是,根据21.4.5/2:
返回:
*(begin() + pos)ifpos < size(),否则引用T具有值 的类型的对象charT(); 参考值不得修改.
因此,如果字符串非空,则返回对内部缓冲区start的引用.如果它为空,则返回对char带有值的引用0,其位置为内存是实现细节.
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |