Programmer
Programmer

Reputation: 115

How to get an easier way of generating the alphabet in C++?

i am trying to make a project,to experiment and learn C++, i didnt finish making it,but what it does is you type in a 3 or 4 (the variable noc) word and the program runs through all the possible (noc) letter words or nonsense, until it finds yours,so there are 2 factors: the length of the word or nonsense and what characters it can type,in my case i just want the alphabet so here is my code:

#include <iostream>
#include <unistd.h>
using namespace std;

const int noc = 3;

int main() {

    string used[noc];
    string inp;
    cin >> inp;
    char albet[] = {'a','b','c'};
    cout << "Starting..." << endl;
    usleep(1);
    string aiput = "";
    while(aiput != inp){
        for(int i = 0; i <= noc; i++){
            aiput = aiput +
        }
    }

    return 0;
}

currently i need the alphabet in the array called 'albet' (i come up with short words for what they mean its easy to forget tho) so please can you get me a way to generate the alphabet in C++ quickly instead of having to type all of them one by one

Upvotes: 9

Views: 19312

Answers (6)

Kunal Kumar
Kunal Kumar

Reputation: 21

from the given below code, you can generate uppercase alphabets of English. Uppercase alphabhets starts in ASCII from A = 65 to Z = 90. And, then, typecast the integral value of uppercase alphabets into character using char().

#include <iostream>
using namespace std;

int main () {
    char a[26];
for (int i=65 ; i<91 ; i++) {
     int a[65-i] = char(i);
     cout<<a<<endl;

return 0;
}

Upvotes: 1

463035818_is_not_an_ai
463035818_is_not_an_ai

Reputation: 122820

When you need a character array you do not have to use individual character literals one by one, as in

char albet[] = {'a','b','c','d','e','f',... uff this is tedious ...};

You can use a string literal instead:

const std::string albet{"abcdefghijklmnopqrstuvwxyz"};

Took me ~10 seconds to type and compared to other answers, this does not rely on ASCII encoding (which is not guaranteed).

Upvotes: 9

Diego Velasco
Diego Velasco

Reputation: 111

You just can also make a function that returns a char, without generating an array, like this:

char get_alphabet_letter(unsigned int index, bool is_upper = false)
{
    char letter = 97 + index;
    if(is_upper) return letter - 32;
    return letter;  
}

Upvotes: 1

AlinP25
AlinP25

Reputation: 95

Each letter has an ASCII representation. More about that here.

They are processed as numbers, being cast, and transformed into characters. For example, the letter a would be represented by the number 97 in decimal.

int aInAscii = 97;
printf("%c", (char)aInAscii);

The upper code would print, as you expect, the letter a. Why? Because we have just converted the number 97 to it's ASCII corresponding character.

So, in this way, we could generate the alphabet, using only numbers. A short example would be here (I preferred casting it before so that the starting and ending points are more clear.

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<char> alphabet;
    int aLetterCode = (int)'a'; // ASCII code for letter a (97)
    int zLetterCode = (int)'z'; // ASCII code for letter z (122)
    for (int charAsciiCode = aLetterCode; charAsciiCode <= zLetterCode; charAsciiCode++) {
        alphabet.push_back((char)charAsciiCode);
    }
    for (char c : alphabet) {
        cout << c << " ";
    }
    return 0;
}

Upvotes: 1

cigien
cigien

Reputation: 60238

You could use std::iota, which is a great algorithm for this use case:

char albet[26] {};
std::iota(std::begin(albet), std::end(albet), 'a');

Here's a demo.

Note that this is not guaranteed to work in c++, unless you have ASCII encoding, but if you can rely on that you'll be fine.

Upvotes: 6

David W
David W

Reputation: 168

Because all characters can be represented in ASCII codes ('a' starts at 97, all ASCII codes are int), you can simply make a loop to do that. For example:

char albet[26];

for (int ch = 'a'; ch <= 'z'; ch++) {
    //do ch-'a' because we start at index 0
    albet[ch-'a'] = ch;
}

and you are done!

Upvotes: 5

Related Questions