我有一个非常大的文件,包含超过一百万个字符,包括空格和换行符。我能够找到一个角色的出现次数,
ifstream inData;
inData.open("info.txt");
char text;
int achar=0;
while (inData >> text)
{
if (text == 'a')
{
achar++;
}
}
cout << achar;
我可以将其扩展为所有字符,但这将需要超过60行代码。在面值上,使用for循环遍历字符,似乎是一种解决方案。但是,文本未排序,因此在while循环中不起作用。我试图将inData插入到字符串中。再一次,由于有新行,它只占用了部分文本。所以,我认为使用数组可能会有所帮助,但是考虑到大量的字符;它不仅难以预测有多少个字符,而且还需要进行超过一百万次的循环。显然,这不是一条明智的选择。有没有一种有效的方法呢?
答案 0 :(得分:6)
只需为计数器使用数组:
int count[256] = {0};
unsigned char c;
while (inData >> c) {
count[c]++;
}