3

以下两行在 Visual Studio 2005 中做同样的事情:

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

myString.append(1,myNewChar);

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

4

1 回答 1

6

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

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

pos1您传递的索引在哪里,并且pos2 == npos在您调用的重载中) - 请注意它是<=而不是<.

于 2011-06-08T21:00:03.537 回答