C++ I/O 计算txt文档中的 每个字母出现的次数,并输出到另外一个txt中
求助C++ I/O 计算txt文档中的 每个字母出现的次数,并输出到另外一个txt中。
求助,怎么计算txt中的各个字母出现的频率,请根据我的 code 修改 谢谢
------解决方案--------------------
------解决方案--------------------
使用 map 容器会比较方便
求助,怎么计算txt中的各个字母出现的频率,请根据我的 code 修改 谢谢
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ifstream inFile ("coded.txt");
if (!inFile)
{
cout << "Can't open fie coded.txt";
return;
}
while(inFile)
{
char letter = inFile.get();
if ( letter == )
freq[letter] += 1;
}
ofstream outFile;
outFile.open("1.txt");
inFile.close();
system("pause");
}
------解决方案--------------------
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
ifstream inFile("coded.txt");
if(!inFile)
{
cout << "Can't open fie coded.txt";
return -1;
}
int freqs[26];
memset(freqs, 0, 26 * sizeof(int));
while(inFile)
{
char letter = inFile.get();
if(isalpha(letter))
freqs[tolower(letter) - 'a'] += 1;
}
for(int i = 0; i < 26; i++)
printf("%c = %d\n", i + 'a', freqs[i]);
return 0;
}
------解决方案--------------------
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
int main()
{
ifstream inFile("main.cpp");
if (!inFile) { cout << "Can't open fie coded.txt"; return 88; }
char ch;
map<char , int> mci; // 装载字母计数
while (inFile >> ch) {
++mci[ch]; // 计数器加1
}
for (auto it = mci.begin(); it != mci.end(); it++)
cout << (*it).first << " => " << (*it).second << endl;
inFile.close();
}
使用 map 容器会比较方便