C ++将char放在数组中相应的槽中

时间:2011-06-14 07:21:55

标签: c++

我需要将一个字母a-z字符存储到c ++中0到25大小的相应插槽中。没有很多if语句,最好的方法是什么?

7 个答案:

答案 0 :(得分:4)

您可以通过以下方式确定角色指数:

int index = yourCharacter-'a';

然后使用该索引存储您需要的内容

答案 1 :(得分:2)

要计算索引,只需从包含字符a-z的char变量中减去'a'。例如:

char c='x';
int index=(int)(c-'a');

答案 2 :(得分:2)

这是你在寻找什么?

char c;
...
arrayName[c - 'a'] = value;

答案 3 :(得分:2)

修改 不是作业,所以我会澄清我的答案。

const char * letters = "abcdefghijklmnopqrstuvwxyz";

将数字中的字母“a”存储到“z”中。 (请注意,由于字符串末尾的空字符,数组大小为27而不是26。)

答案 4 :(得分:1)

字符只是整数,所以你可以对它们进行算术运算。

char c = ...;
array[c - 'a'] = c.

请注意,大写字符与小写字符不同,因此您需要单独处理它们(如果需要)。

if (c >= 'A' && c <= 'Z')
    c += 'a' - 'A'; // make lower case

答案 5 :(得分:1)

如果您想要便携,则无法使用大多数人提出的解决方案 其他:'a''z'不一定是连续的。最可靠的 解决方案是在表中查找该字母,并使用该索引 表,例如:

char letters[] = "abcdefghijklmnopqrstuvwxyz";

int index = std::find( begin( letters ), end( letters ) - 1, ch )
        - begin( letters );
if ( index < size( letters ) - 1 )
    //  it's good
else
    //  character wasn't a (lower case) letter.

请注意- 1end的{​​{1}}:这是因为size有 最后增加letters

请注意,在很多情况下,在现代机器上,它可能更简单 使用256个条目的数组;空间的差异不太可能 导致内存不足,管理它的代码将会很多 简单。

答案 6 :(得分:0)

char letters[26];

for (char c = 'a'; c <= 'z'; c++)
{
    letters[c - 'a'] = c;
}