3
末下面两行做同样的事情在Visual Studio 2005:字符串::在插入串
myString.insert(myString.size(),1,myNewChar);
和
myString.append(1,myNewChar);
是第一位的应该抛出out_of_range异常或这是正确的行为?
末下面两行做同样的事情在Visual Studio 2005:字符串::在插入串
myString.insert(myString.size(),1,myNewChar);
和
myString.append(1,myNewChar);
是第一位的应该抛出out_of_range异常或这是正确的行为?
这是正确的行为 - 您传递的索引是位置后面插入新角色的位置的索引,而不是之前。事实上,C++ 03标准特别说(§21.3.5.4/ 2):
需要
pos1 <= size()
和pos2 <= str.size()
(其中pos1
是在你传递索引和pos2 == npos
超载你打电话) - 请注意,这是<=
而不是<
。
当对索引感到困惑时,总是考虑一些普通的情况(带有零或带有一个元素的字符串)以及在这种情况下您希望如何插入。 – 2011-06-08 22:23:15