Вам уже объяснили проблему.Я предложу совершенно другой способ сделать то, что, как мне кажется, исключает большую вероятность появления аналогичной ошибки.Во-первых, я бы отделил часть «проверка соответствия текстов условию» от части «кодирование».Прямо сейчас у вас есть один (довольно маленький) код, который, кажется, имеет две, в основном несвязанные, обязанности.
Кодирующая часть, я бы написал что-то вроде этого:
struct encode_byte {
char operator()(char a, char b) {
return a ^ b;
}
};
std::transform(sText.begin(), sText.end(),
sPassword.begin(), sPassword.end(),
std::back_inserter(sResult),
encode_byte());