您的位置:首页 > 编程语言

一个综合泛型编程,文件读取和异常处理的简单例子

2008-07-15 12:23 531 查看
//从外文件中读入一篇正文,统计正文中26个不同英文字母出现的次数,分别考虑区分大小写
//和不区分大小写两种情况
#include <stdafx.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;

const int line = 10; //正文的行数

int main()
{
vector<int> capital(26,0),small(26,0),temp(26);
//建立文件
//ifstream ifile;
ofstream ofile;
ofile.open("my.txt");
//ifile.open("my.txt",ios::in);
char str[80];
for(int i=0;i<line;i++)
{
cout<<"输入第"<<i+1<<"行:";
cin.getline(str,80,'/n'); //读入
ofile<<str<<endl;
}
ofile.close(); //关闭
ifstream ifile;
ifile.open("my.txt"); //作为输入文件
char c;
while((c=ifile.get())!=EOF)
{
if(islower(c))
small[c-'a']++; //统计小写字母的个数
if(isupper(c))
capital[c-'A']++; //统计大写字母的个数
}
ifile.close();

ofstream ofile1;
ofile1.open("mysaved.txt",ios::out);
if(!ofile1)
{
cout<<"数据保存失败!"<<endl;
exit(1);
}
for(char letter='A';letter<='Z';letter++)
{
cout<<setw(3)<<letter;
ofile1<<setw(3)<<letter;
}
cout<<endl;
ofile1<<endl;
for(int i=0;i<capital.size();i++)
{
cout<<setw(3)<<capital[i];
ofile1<<setw(3)<<capital[i];
}
cout<<endl;
ofile1<<endl;
for(char letter='a';letter<='z';letter++)
{
cout<<setw(3)<<letter;
ofile1<<setw(3)<<letter;
}
cout<<endl;
ofile1<<endl;

for(int i=0;i<small.size();i++)
{
cout<<setw(3)<<small[i];
ofile1<<setw(3)<<small[i];
}
cout<<endl;
ofile1<<endl;
try
{
for(int i=0;i<temp.size();i++)
{
temp[i] = small[i] + capital[i];
}
//temp = small + capital;
}
catch(const out_of_range& exc)
{
cout<<exc.what()<<endl;
}
catch(const length_error& exc)
{
cout<<exc.what()<<endl;
}
catch(const underflow_error& exc)
{
cout<<exc.what()<<endl;
}
for(c = 'A';c <= 'Z'; c++) //输出大小写
{
cout<<" "<<c<<char(c+32);
ofile1<<" "<<c<<char(c+32);
}
cout<<endl;
ofile1<<endl;
for(int i=0;i<temp.size();i++)
{
cout<<setw(3)<<temp[i];
ofile1<<setw(3)<<temp[i];
}
cout<<endl;
ofile1<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐