确定不同字符的数量

时间:2014-03-08 09:49:59

标签: c++

我有一个非常大的文件,包含超过一百万个字符,包括空格和换行符。我能够找到一个角色的出现次数,

ifstream inData;
    inData.open("info.txt");
    char text;
    int achar=0;
    while (inData >> text)
    {
        if (text == 'a')
        {
            achar++;
        }

    }

    cout << achar;

我可以将其扩展为所有字符,但这将需要超过60行代码。在面值上,使用for循环遍历字符,似乎是一种解决方案。但是,文本未排序,因此在while循环中不起作用。我试图将inData插入到字符串中。再一次,由于有新行,它只占用了部分文本。所以,我认为使用数组可能会有所帮助,但是考虑到大量的字符;它不仅难以预测有多少个字符,而且还需要进行超过一百万次的循环。显然,这不是一条明智的选择。有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:6)

只需为计数器使用数组:

int count[256] = {0};
unsigned char c;
while (inData >> c) {
    count[c]++;
}