字符串和ascii值

时间:2015-08-29 21:30:00

标签: c++ string

在这段代码中,如果我运行for循环来了解存储在数组c中的元素,我会得到1 1 1 0 0 0 0 1 0 0的输出。

输入为abc。它为什么会提供1 1 1而不是0 1 2 0 0 0 0 0 0

int c[26]={};
cin >> s;
len = s.length();
for(int i = 0 ; i < len ; i++ ){
    c[s[i] - 'a'] ++ ;
}

3 个答案:

答案 0 :(得分:1)

您的c数组是读取的字符的直方图。你的输出是说你读了1&#39; a&#39;,&#39; b&#39;和1&#39; c&#39;。试试c

答案 1 :(得分:0)

您的代码基本上是在计算字符串中的字母数。计数存储在数组c中,其中索引表示字母表中的字母索引。因此a0b1c2,依此类推。

因此,对于abc,正确的输入确实是1 1 1,因为有1 a,1 b和1 {{1} }。您的c代表一个包含1 0 1 2和2 b s的字符串。

答案 2 :(得分:0)

s[i] - 'a'

即返回0,1和2.但是

c[s[i] - 'a'] ++ ;

每次出现的C []总是增加1,在开始时全部用零填充。因此,您可以在输出中获得所有1。

尝试

c[s[i] - 'a'] = s[i] - 'a'