我有一个问题,我需要将一个值与一个字母联系起来。这些值以数组形式出现。例如:
Value vector -> [1,2,3,1,2,5,1,...,8]
我需要一个想法,使该向量的第一个数字链接到字母“a”,第二个数字链接到字母“b”,等等,直到最后一个数字链接到字母“z”。
所以, a -> 2
, "a" 的值为 2。
这样做的目的是,如果我有一个像“air”这样的词,我希望 air 的值是“a”的值 +“i”的值 +“r”的值。
您的问题似乎是您无法从字母中获取数组索引。二十六个小写拉丁字母是 ASCII 中的一个连续块,您可以使用单引号表示法获得字符的 ASCII 码,因此:
int ix = c - 'a'
c
请注意,如果您的字符不是字母,这将为您的数组提供无效索引。如果您的字母表不是纯拉丁字母表,您可以编写一个函数来为您的字母分配一个数字索引。例如,如果我想为德语字母编写索引函数,我会这样做:
int index_de(int c) {
if (c == 'ä') return 26;
if (c == 'ö') return 27;
if (c == 'ü') return 28;
if (c == 'ß') return 29;
if (c < 'a' || c > 'z') return -1;
return c - 'a';
}
(因为重音字母超出了纯 7 位 ASCII 范围,这将引入源代码和输入编码问题。请注意。)
然后,当您 (a) 阅读文件,然后 (b) 扫描要评分的单词时,您可以使用此功能为字母代码分配分数。