string::在字符串末尾插入
以下两行在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是正确的行为 - 您传递的索引是新字符插入点后面位置的索引,而不是之前。事实上,C++03 标准明确指出(§21.3.5.4/2):
(其中
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):
(where
pos1
is the index you're passing andpos2 == npos
in the overload you call) -- note that it's<=
rather than<
.