C++统计文件中的关键字程序
需求分析: 从键盘输入某个C++源程序文件名,而后通过getline依次读入该文件中的各行(假设每行都不超过100个字符),并统计显示出该源程序文件中出现了哪些你所关心的C++关键字,以及各关键字出现的次数(所关心的那一批关键字由程序进行指定)。
7.2程序执行的结果:
这是输入的源文件内容地址为:D:\test.txt,假定我们统计void,returrn,float,new四个字符串,当然你也可以曾加统计的字符串。
7.3概要设计:
本程设计思路: 将每个关键字其自身位索引,保存计数到std::map数据结构里,而后从各读入行中“分解”出每一个“字”,并依次与A中的各关键字进行比较,相同则在其计数上加1,如此统计个关键字出现的次数。
程序流程图(如左图):
7.3 详细设计与编码:
见上传程序。
7.4 调试分析:
本题的关键在于从每行的源文件中提取字符串并与关键字比较,这需要我们剔除一些无关的字符。
7.5 用户使用说明:
设置好了关键字后,输入源文件的路径即可得到文件中关键字出现的次数。
7.6 设计心得:
本题加强了我对文件操作的理解。以及对字符串的操作的理解。
#include<iostream>
using namespace std;
template<typename T>
class list //增序排列链表
{
public:
template<typename T2>
class node //节点
{
public:
node();
node(T2 _data):data(_data),next(0) { }
node(const node& other);
T2 data;
node* next;
~node()
{
if(next)
delete next;
// cout<<"delete...";
}
friend class list<T2>;
};
list():head(0),length(0) { }
void add(T value)
{
node<T> *_node=new node<T>(value);
if(_node)
{
length++;
if(!head || _node->data<=head->data) //处理只包含一个元素或无元素
{
_node->next=head;
head=_node;
return;
}
node<T>* temp=head;
while(temp->next) //便利查询插入的位子
{
if(temp->next->data>_node->data)
break;
temp=temp->next;
}
_node->next=temp->next;
temp->next=_node;
}
return;
}
void printList() const
{
node<T>* index=head;
原文请找腾讯752018766优,文-论'文.网http://www.youerw.com {
delete head;
}
node<T>* head;
int length;
};
void main()
{
int i;
list<int> array;
// array.add(3);
// array.add(3);
cout<<“请依次输入数字(0结束)"<<endl;
cin>>i;
while(i!=0)
{
array.add(i);
cin>>i;
}
// cout<<array.length;
array.printList();}1812