string :: insert在string的末尾

时间:2011-06-08 20:56:20

标签: c++ language-lawyer

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

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

myString.append(1,myNewChar);

是第一个应该抛出out_of_range异常还是这是正确的行为?

1 个答案:

答案 0 :(得分:5)

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

  

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

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

相关问题