У меня есть код для замены содержимого подстроки данной строки. Это не работает, как я ожидал.
Насколько я понимаю, s3.find ("они") вернет 6. Поскольку pos не совпадает с string :: npos, то из позиции 6 2 символа в s3 заменяются строкой s4. Таким образом, s3 будет "Там Бои снова!"после замены. Тем не менее, вывод s3: «Там Боб и Билл снова!». Может ли кто-нибудь помочь объяснить?
#include <iostream>
#include <string>
using namespace std;
string prompt("Enter a line of text: "),
line( 50, '*');
int main()
{
string s3("There they go again!"),
s4("Bob and Bill");
int pos = s3.find("they");
if( pos != string::npos )
s3.replace(pos, 2, s4);
cout << s3 << endl;
cout << s4 << endl;
return 0;
}