2011-06-08 142 views
3

末下面兩行做同樣的事情在Visual Studio 2005:字符串::在插入串

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

myString.append(1,myNewChar); 

是第一位的應該拋出out_of_range異常或這是正確的行爲?

回答

5

這是正確的行爲 - 您傳遞的索引是位置後面插入新角色的位置的索引,而不是之前。事實上,C++ 03標準特別說(§21.3.5.4/ 2):

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

(其中pos1是在你傳遞索引和pos2 == npos超載你打電話) - 請注意,這是<=而不是<

+0

當對索引感到困惑時,總是考慮一些普通的情況(帶有零或帶有一個元素的字符串)以及在這種情況下您希望如何插入。 – 2011-06-08 22:23:15