string::在字符串末尾插入

发布于 2024-11-14 16:54:30 字数 224 浏览 5 评论 0原文

以下两行在 Visual Studio 2005 中执行相同的操作:

myString.insert(myString.size(),1,myNewChar);

第一行是否

myString.append(1,myNewChar);

应该抛出 out_of_range 异常,或者这是正确的行为吗?

The following two lines do the same thing in Visual Studio 2005:

myString.insert(myString.size(),1,myNewChar);

and

myString.append(1,myNewChar);

Is the first one supposed to throw an out_of_range exception or is this the correct behavior?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘦怹 2024-11-21 16:54:30

这是正确的行为 - 您传递的索引是新字符插入点后面位置的索引,而不是之前。事实上,C++03 标准明确指出(§21.3.5.4/2):

需要 pos1 <= size()pos2 <= str.size()

(其中 pos1 是您传递的索引,您调用的重载中的 pos2 == npos)——请注意,它是 <= 而不是 <

This is correct behavior -- the index you pass is the index of the position behind the point of insertion of the new characters, not before. In fact, the C++03 standard specifically says (§21.3.5.4/2):

Requires pos1 <= size() and pos2 <= str.size()

(where pos1 is the index you're passing and pos2 == npos in the overload you call) -- note that it's <= rather than <.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文