【发布时间】:2023-02-08 03:44:46
【问题描述】:
示例如下:
string s1 = "abcde";
string s2(s1, s1.size()); // s1.size() = 5.
请注意 s1.size() = 5 并且最后允许的索引 = 4(对于字符“e”)。以上运行正常返回空字符串。只有当 pos = 6 时,它才会因异常超出范围而失败。为什么?
根据 cppereference 网站:
例外情况
3) std::out_of_range 如果 pos > other.size()正确的异常不应该是“if pos >= other.size()?
谢谢你的帮助。
【问题讨论】:
-
std::string现在需要有一个空终止符。 -
嗯从什么时候开始?我想如果 s 是 C 字符数组那么是的。
-
See this。但正如答案所述,在该位置写除
0以外的任何内容很可能会搞乱std::string将如何连接、删除等。