Помогите написать программу Скремблер на С++. - Компьютерные вопросы

Вопрос Помогите написать программу Скремблер на С++.

Статус
В этой теме нельзя размещать новые ответы.
Регистрация
20 Дек 2013
Сообщения
95
Репутация
1
Спасибо
0
Монет
0
#include
#include
using std::string;
using std::cout;

string scramble(string input, char scr){
auto pos = input.begin();
auto end = input.end();
while(pos != end)
*pos++ = *pos ^ scr;
return input;
}

int main(){
char mask = 8;
string inputString = "Simple Xstring";
string scrambled = scramble(inputString, mask);
string clear = scramble(scrambled, mask);
cout<<"Before: " <<inputString;
cout<<" After: " <<scrambled;
cout<<" Clear:"<<clear;
cout<<" ";
}

Когда компилируешь, выдает:

Before: Simple Xstring
After: aexdm(P{|zafo
Clear:mple Xstring

В последней строчке Clear должно быть написано Simple Xstring, а там две первые буквы не выводит. Не могу понять в чем дело...
 
Регистрация
2 Ноя 2013
Сообщения
99
Репутация
0
Спасибо
0
Монет
0
*pos++ = *pos ^ scr; нигде не гарантируется, что значение pos в правой части будет взято из pos до ++ (из левой), а не после (что и происходит). Раздели операцию на две: XOR-енье и увеличение pos.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу