3

次の2行は、VisualStudio2005でも同じことを行います。

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 に答える