【发布时间】:2013-10-24 03:25:30
【问题描述】:
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <string>
#include <iomanip>
#include <fstream>
#include <stdio.h>
using namespace std;
int main()
{
ifstream file;
string filename;
char character;
int letters[153] = {};
cout << "Enter text file name: ";
cin >> filename;
file.open(filename.c_str());
if (! file.is_open())
{
cout << "Error opening file. Check file name. Exiting program." << endl;
exit(0);
}
while (file.peek() != EOF)
{
file >> character;
if(!file.fail())
{
letters[static_cast<int>(character)]++;
}
}
for (int i = 0; i <= 153; i++)
{
if (letters[i] > 0)
{
cout << static_cast<char>(i) << " " << letters[i] << endl;
}
}
exit(0);
}
#endif
大家好,我当前的代码计算文本文件中每个字母的频率。但是,它不计算空格的数量。有没有一种简单的方法可以打印出 .txt 文件中的空格数?
另外,当我尝试访问矢量项目时,为什么会遇到 seg 错误? 例如,如果我使用:
cout
非常感谢。
【问题讨论】:
-
请注意,您的向量的有效位置是
letters[0]到letters[152]。 -
@WhozCraig:除非您只使用数组,因为使用
unordered_map将小整数值映射到整数是多余的。 -
在你的 for 循环中,你说“i