示例如下:
string s1 = "abcde";
string s2(s1, s1.size()); // s1.size() = 5.
Run Code Online (Sandbox Code Playgroud)
请注意,s1.size() = 5 且最后允许的索引 = 4(对于字符“e”)。上面的代码运行良好,返回空字符串。仅当 pos = 6 时,它才会失败,并出现超出范围的异常。为什么?
根据 cppe 参考网站:
例外
3) std::out_of_range 如果 pos > other.size()
正确的异常不应该是“if pos >= other.size()”吗?
自 C++11 起,s1[s1.size()]需要 才能工作并将返回对'\0'字符串末尾的 的引用。然而,将 更改'\0'为其他内容会导致未定义的行为。但是您可以在那里写作'\0'。
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |