String na char, kody ASCII, przesuwanie liter alfabetu

0

Mamy na przykład wyraz (słowo?): SIEMANO <- jest typu string
Chcemy teraz przesunąć każdą z liter o kilka miejsc alfabetu (jak w szyfrze cezara).
Mamy to zrobić w ten sposób, że odczytujemy każdą z liter i traktujemy ją jako typ char.
Robimy (litera + 3) i przesuwamy wartość w ASCII.
Pytanie, jak to ogarnąć? Próbowałem rzutowania, ale coś nie wychodzi, pewnie nie tędy droga.
Wiadomo, że gdyby na początku był już char to robimy tylko przesunięcie i z głowy. A może jakoś na początku zrobić konwersję i ze string'a machnąć char'a?
Pogubiłem się trochę :p

0

String to przecież tablica char-ów, więc można jak na nich. Pamiętaj tylko że jak wynik większy niż 'z'/'Z' wyjdzie, to odejmij od niego ('z' - 'a').

0
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s = "SIEMANO";
    char c = s[2];
    cout << c << endl;
    c += 3;
    cout << c << endl;
    return 0;
}
0

No, ale...

#include <iostream>
#include <string>
using namespace std;
int main() 
{
	string txt="SIEMANO";
	cout << "SIEMANO\n";
	for(int i=0;i<txt.size();i++)
	{
		cout << txt[i];
	}
	cout << "\n";
	for(int i=0;i<txt.size();i++)
	{
		cout << txt[i+1];
	}
	return 0;
}

Wynik:

 
SIEMANO
SIEMANO
IEMANO

http://ideone.com/SJnXu9

...chyba nie w tym sensie?

0

Co to Twoim zdaniem robi? I co ma wspólnego z pytaniem albo moim kodem przykładowym?

cout << txt[i+1];
0

Kod cezara jest młócony na tym forum przynajmniej raz na dwa tygodnie, może trochę się wysil i poszukaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1