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

问题描述 投票:0回答:3

我正在尝试创建一个项目,以试验和学习C ++,但我并没有完成它,但是它的作用是您输入3或4(变量noc)字,并且程序运行所有可能的(noc )字母单词或废话,直到找到您的单词为止,因此有两个因素:单词或废话的长度以及可以键入的字符,在我的情况下,我只想输入字母所以这是我的代码:

#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 ++字母的方法,而不必一一键入所有的字母]

c++ arrays project shortcut alphabet
3个回答
5
投票

您可以使用std::iota,在这种情况下,这是一个很好的算法:

std::iota

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

请注意,除非您使用ASCII编码,否则这不是保证才能在c ++中工作,但是如果可以依靠它,那就可以了。


0
投票

每个字母都有一个ASCII表示形式。有关demo的更多信息。

它们被处理为数字,被转换为字符。例如,字母“ a”将以十进制数字97表示。

here

如您期望的那样,上面的代码将打印字母'a'。为什么?因为我们刚刚将数字97转换为它的ASCII对应字符。

因此,通过这种方式,我们可以仅使用数字来生成字母。这里有一个简短的示例(我更喜欢在之前进行铸造,以便起点和终点更加清晰。

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

0
投票

因为所有字符都可以用ASCII码表示('a'始于97,所有ASCII码均为int),所以您可以简单地循环执行该操作。例如:

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

您就完成了!

© www.soinside.com 2019 - 2024. All rights reserved.