如何获得在 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;
}
我正在尝试做一个项目,实验和学习 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;
}