如何获得在 C++ 中生成字母表的更简单方法?

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

我正在尝试做一个项目,实验和学习 C++,我没有完成它,但它所做的是你输入一个 3 或 4(变量 noc)字,程序运行所有可能的 (noc) 字母词或废话,直到它找到你的,所以有 2 个因素:单词或废话的长度以及它可以输入的字符,在我的情况下,我只想要字母表 所以这是我的代码:

#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;
}

目前我需要名为 'albet' 的数组中的字母表(我想出了简短的词来表达它们的意思,但很容易忘记) 所以请你给我一个方法来快速生成 C++ 中的字母表,而不是一个一个地输入所有字母表

您可以使用 std::iota,这是一个非常适合此用例的算法:

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

这是一个demo

请注意,这不能保证在 C++ 中工作,除非你有 ASCII 编码,但如果你可以依赖它就没问题。

每个字母都有一个 ASCII 表示。更多关于 here.

它们被处理为数字,被铸造,并转化为字符。例如,字母 a 将由十进制数字 97 表示。

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

如您所料,上面的代码将打印字母 a。为什么?因为我们刚刚将数字97转换成了它的ASCII对应字符。

因此,通过这种方式,我们可以仅使用数字生成字母表。这里有一个简短的例子(我更喜欢之前投射它,这样起点和终点就更清楚了。

#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;
}

因为所有的字符都可以用ASCII码来表示('a'从97开始,所有的ASCII码都是int),你可以简单地做一个循环来做到这一点。例如:

char albet[26];

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

大功告成!

当你需要一个字符数组时,你不必一个一个地使用单个字符文字,如

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

您可以改用字符串文字:

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

打字花了我大约 10 秒,与其他答案相比,这不依赖于 ASCII 编码(不能保证)。

您也可以创建一个 returns 字符的函数,而不生成数组,如下所示:

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

从下面给出的代码,您可以生成英文的大写字母。大写字母以 ASCII 开头,从 A = 65 到 Z = 90。然后,对 使用 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;
}