这个怎么做啊?我不会,各位帮帮我啊!感激不尽啊!!
实验目的
学习函数和操作符重载的方法
学习进行格式化输入输出
学习使用C++预定义的文件I/O类进行文件输入输出
实验内容
1. 文件输入输出
从输入文件"file.in"中读入文件内容,为每一行加上行号后,输出到输出文件“file.out"中,最后,输出所读文件总的字符数
[测试数据]:
输入文件内容(file.in):
#include
int main()
{
cout << "Hello, world";
return 0;
}
输出文件内容(file.out):
1 #include
2
3 int main()
4 {
5 cout << "Hello, world";
6 return 0;
7 }
Total charactors:67
[实现要求]:
(1) 行号占5个字符宽度,且左对齐;
(2) 能处理文件打开错误;
(3) 文件字符总数不包括换行符
[实现提示]:
(1) 利用setw和setiosflags(ios::left)来控制行号的输出(需要在程序中包含头文件iomanip.h);
(2) 利用长为1000的字符数组作为缓冲区存放读取的一行内容,利用函数istream::getline进行读取一行的操作;
(3) 利用strlen求字符串长度(需要在程序中包含头文件string.h)
[实验步骤]
(1) 在你的程序目录下创建一个文本文件file.in,在其中输入上面的测试数据
(2) 完成所要求的程序,该程序读取文件file.in的内容,并产生输出到文件file.out中
(3) 打开文件file.out查看输出的文件内容
à[在VC中创建一个独立的文本文件]
选择菜单File|New,在new对话框中选择Files标签,选择列表中的“Text File”,并清除右上角的“Add to Project”复选框,此时其他编辑框都变灰。按OK结束创建。在Developer Studio的文档显示区会显示一个空白的文档,在上面输入你想要输入的内容,然后选菜单File|Save,此时系统会问你该文档的名字,将文件以合适的名字存放到合适的目录。
2. 操作符重载
为实验六中的队列类重载抽取与插入运算符
[实验要求]
(1) 重载队列类的抽取与插入运算符,使用这些运算符的主程序如下:
#include
#include "queue.h"
int main() {
Queue q;
cout << "Please input queue member" << endl;
cout << "FORMAT: queue number: member1,member2,...memebern" << endl;
cout << "SUCH AS: 4: 13, 24, 31 ,45" << endl;
cin >> q; //输入队列元素
cout << endl << "Queue length:" << q.getCount() << endl; //输出队列长度
cout << "Queue your entered:" << endl;
cout << q; //输出队列元素
return 0;
}
(2) 抽取操作符从输入流中读取队列对象的信息,读入的格式为:
队列元素个数n:元素1,元素2,...,元素n
队列元素之间用逗号隔开,队列个数值和第一个元素之间用冒号隔开。如队列有5个元素,分别为12,24,31,45,22,则输入流中的内容为:
5: 12, 24, 31, 45, 22
(3) 插入操作符将队列对象的内容放到输出流中,格式为:
元素1,元素2,...,元素n
如上面读入的队列的输出为:
12, 24, 31, 45, 22
[实现提示]
(1) 将重载的两个操作符定义为类Queue的友元函数
(2) 两个函数的原型分别为:
ostream & operator << (ostream & , Queue &);
istream & operator >> (istream & , Queue &);
[思考问题]
(1) 为什么要将抽取和插入操作符定义为友元,而不是直接定义为成员函数?
(2) 重载操作符的第一个参数和返回值为什么都用引用?
--------------------next---------------------
阅读(1161) | 评论(0) | 转发(0) |