一个综合泛型编程,文件读取和异常处理的简单例子
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;
}
//和不区分大小写两种情况
#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;
}
相关文章推荐
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- C++调用Lua读取配置文件的一个简单例子
- 【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 读取文件
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 读取文件
- Ajax的一个简单例子--从一个文件文件中读取数据显示到页面中
- 一个简单的从txt文件中读取数据插入数据库
- 一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
- 编写一个程序,一行行地读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来。为了简单起见,你可以假定所有的输入行均不超过1000个字符。
- LUA读取CSV文件的一个简单Demo
- 一个简单的jQuery插件ajaxfileupload实现ajax上传文件例子
- jfinal初接触,一个简单的文件上传例子
- 一个简单的调用脚本文件的例子
- 一个简单的读取json字符串的小例子
- 对文件读取以及写入的一个小例子
- 一个简单打开D盘所有文件夹和文件的例子以及动态创建双击事件
- 【ASP】ASP vbscript一个综合的例子,操作html文件添加、删除代码、删除文件。
- Google PB协议学习记录--一个简单的例子--如何编译.proto文件为.java文件