How to increase letters in C ++?

I am creating Cesar Cipher in C ++ and I cannot figure out how to increase the letter.

Each time I need to increase the letter by 1 and return the next letter in the alphabet. Something like the following to add 1 to 'a' and return 'b' .

 char letter[] = "a"; cout << letter[0] +1; 
+6
source share
8 answers

This snippet should get started. letter is a char , not a char array and a string.

static_cast ensures that the result of 'a' + 1 treated as char .

 > cat caesar.cpp #include <iostream> int main() { char letter = 'a'; std::cout << static_cast<char>(letter + 1) << std::endl; } > g++ caesar.cpp -o caesar > ./caesar b 

Beware when you get to 'z' (or 'z' !) And good luck!

+5
source

It works as it is, but since the addition advances the expression to int , you want to return it to char again so that your IOStream displays it as a character, not a number:

 int main() { char letter[] = "a"; cout << static_cast<char>(letter[0] + 1); } 

Output : b

Also add traversal logic (so when letter[0] is z , you set a , not increase) and consider the case.

+3
source

Does writing ++ work? In general, char is a numeric type, so it will increment ascii code . But I believe that it should be defined as char letter not an array. But beware of adding one to the "Z". You will get '[' = P

 #include <iostream> int main () { char a = 'a'; a++; std::cout << a; } 

This seems to work well;)

+1
source
 char letter = 'a'; cout << ++letter; 
0
source

This works, but don’t forget that if you increment "z", you need to get "a", so maybe you need to go through a check function that prints "a" when you get "z".

0
source

waleed @ waleed-P17SM-A: ~ $ nano Good_morning_encryption.cpp waleed @ waleed-P17SM-A: ~ $ g ++ Good_morning_encryption.cpp -o Good_morning_encryption.out waleed @ waleed-P17SM-A: ~ $ ._encryption_en : waleed Ciphertext: jnyrrq waleed @ waleed-P17SM-A: ~ $ cat Good_morning_encryption.cpp

  #include <iostream> #include <string> using namespace std; int main() { //the string that holds the user input string text; //x for the first counter than makes it keeps looping until it encrypts the user input //len holds the value (int) of the length of the user input ( including spaces) int x, len; //simple console output cout << "Enter your text:"; //gets the user input ( including spaces and saves it to the variable text getline(cin, text); //give the variable len the value of the user input length len = (int)text.length(); //counter that makes it keep looping until it "encrypts" all of the user input (that why it keeps looping while its less than len for(x = 0; x < len; x++) { //checks each letts (and spaces) in the user input (x is the number of the offset keep in mind that it starts from 0 and for example text[x] if the user input was waleed would be w since its text[0] if (isalpha(text[x])) { //converts each letter to small letter ( even though it can be done another way by making the check like this if (text[x] =='z' || text[x] == 'Z') text[x] = tolower(text[x]); //another counter that loops 13 times for (int counter = 0; counter < 13; counter++) { //it checks if the letts text[x] is z and if it is it will make it a if (text[x] == 'z') { text[x] = 'a'; } //if its not z it will keeps increamenting (using the loop 13 times) else { text[x]++; } } } } //prints out the final value of text cout << "Encrypted text:\n" << text << endl; //return 0 (because the the main function is an int so it must return an integer value return 0; } 

Note: this is called ceser encryption cipher, it works as follows:

ABVGDEZHZIKLMNOPRSTUFHUCHAYUA NOPQRSTUVWXYZABCDEFGHIJKLM so for example, my name waleed it will be written as: JNYRRQ so it just adds 13 letters to each letter

I hope this helps you

0
source

You can use 'a' + ((letter - 'a' + n)% 26); assuming after 'z' you need 'a' ie 'z' + 1 = 'a'

  #include <iostream> using namespace std; int main() { char letter='z'; cout<<(char)('a' + ((letter - 'a' + 1) % 26)); return 0; } 

See fooobar.com/questions/903665 / ...

0
source

enter the letter [n] in byte * and increase its reference value by 1.

-1
source

Source: https://habr.com/ru/post/903663/


All Articles