1. 1. 基础练习 (1)教材习题 11-7 (2)教材习题 11-3 (3)教材习题 11-4

    2. 应用练习 (1)已知有班级名单文件 list.txt(见实验 7 附件包)。编写一个应用程序实现随机抽点 5 位同学,在屏幕上显示结果,同时,也将结果写入文件 roll.txt。 ① 编写程序实现题目基本功能要求。(必做) ② ******选做******) 对①中实现的基本功能进行完善、扩充,使得这个点名应用程序更灵活、更方便。比如: a) 从键盘输入班级文件名,支持对不同班级的点名操作; b) 从键盘输入用于保存点名结果的文件名。更灵活地,自动获取当前系统日期作为文 件名,比如 20180612.txt。(如果希望更细粒度,文件名可以到小时和分钟这一层级); c) 随机抽点人数不固定,通过键盘按键控制何时抽点结束; d) 通过菜单及程序的函数模块划分,或类的设计与实现,做成一个更完善的应用,等 等。 (2)统计英文文本文件字符数、单词数、行数,文件名由键盘输入。 ① 编写 C++程序实现题目基本功能要求。(必做) ② ******选做****** a) 提供菜单,由用户选择统计内容; b) 思考当文本内容数量级偏大,①处已实现的程序能否胜任,实现快速统计?在算法 和处理逻辑上是否存在进一步改进的部分?

  2. 解答:
    1. 11-3

      1. #include<iostream>
      2. #include<fstream>
      3. using namespace std;
      4. int main(){
      5. ofstream out("test1.txt");
      6. if(!out) {
      7. cout << "fail to open." << endl;
      8. return ;
      9. }
      10. out<<"已成功写入文件!"<<endl;
      11. out.close();
      12.  
      13. return ;
      14. }

    2. 11-4:

      1. #include <iostream>
      2. #include <fstream>
      3. #include <string>
      4. using namespace std;
      5. int main() {
      6.  
      7. string s;
      8. ifstream in("test1.txt");
      9. if(!in) {
      10. cout << "fail to open." << endl;
      11. return ;
      12. }
      13. in >> s;
      14. cout << s;
      15. in.close();
      16. return ;
      17. }

    3. 11-7

      1. // p510, ex11-7
      2. #include <iostream>
      3. using namespace std;
      4.  
      5. int main() {
      6.  
      7. ios_base::fmtflags original_flags=cout.flags();//保存现在的参数设置
      8.  
      9. cout << << '|';
      10. cout.setf(ios_base::left, ios_base::adjustfield);//输出左对齐
      11.  
      12. cout.width();//设置域宽,但是只对第一个输出起作用
      13. cout << << << '\n';
      14.  
      15. cout.unsetf(ios_base::adjustfield);//清除左对齐格式
      16. cout.precision();// 两位浮点数
      17. cout.setf(ios_base::uppercase|ios_base::scientific);// 科学计数法
      18. cout << 831.0;
      19. cout.flags(original_flags); // 恢复原来的格式设置
      20.  
      21. return ;
      22. }

    4. 这道题我分别采用三种方式读入老师所给的文件,但是读不进来。测试输出的都是空格乱码。我将list.txt文件和代码放在同一目录下,但是,就是读入不了啊。然后我就自己新写了一个test1.txt文件,可以正常读取输出。老师所给的文件有什么特殊输入,特殊字符吗?一定要文件读入这个list.txt文件是不是在考查哪个知识?遗憾的是,我并没有成功读入文件啊!!!下面给出我自己创建的文件运行
      1. #include<iostream>
      2. #include<string>
      3. #include<cstdlib>
      4. #include<fstream>
      5. using namespace std;
      6. struct student{
      7. string order;
      8. string xuehao;
      9. string name;
      10. string classname;
      11. };
      12. int main(){
      13. student s[];
      14. ifstream infile("test1.txt");
      15. if(!infile) //测试是否成功打开
      16. {
      17. cerr<<"open error!"<<endl;
      18. return ;
      19. }
      20. /*利用行读取来获取文件信息*/
      21. /*int i=0;
      22. char c[83];
      23.  
      24. while(!infile.eof()){
      25. infile.getline(c,83);
      26. cout<<c[i]<<endl;
      27. i++;
      28. }
      29. infile.close(); //利用行读入进行文件读取*/
      30.  
      31. /*仿照课件员工工资读取方式读取*/
      32. /* while(!infile.eof())
      33. {
      34. infile.read(reinterpret_cast<char*>(&s), sizeof(s)); //只有二进制才能这样读取吗?
      35. if(infile) {
      36. cout << s.order << " " << s.xuehao << endl;
      37. }
      38. }
      39. infile.close(); */
      40.  
      41. int i=;
      42. while(infile>>s[i].order>>s[i].xuehao>>s[i].name>>s[i].classname)
      43. {
      44. i++;
      45. }
      46. infile.close();
      47. int a=;
      48. ofstream out("roll.txt");
      49. for(int i=;i<=;++i)
      50. {
      51. a=rand()%i+;
      52. cout<<s[a].order<<" "<<s[a].xuehao<<" "<<s[a].name<<" "<<s[a].classname<<endl;
      53. out<<s[a].order<<" "<<s[a].xuehao<<" "<<s[a].name<<" "<<s[a].classname<<endl;
      54. }
      55. out.close();
      56.  
      57. return ;
      58. }

      1. 最后的蓝色部分也是一行输出,由于我定义的s数组为100,但是文件里面只有5个名字,所以输出了其中没有值的一项。

      2. 写入的文件截图如下
      3. 利用实验七里面的list.txt生成截图如下:
      4. SYSTEMTIME sys;
        GetLocalTime(&sys);
        cout<<sys.wYear<<sys.wMonth<<sys.wDay<<sys.wHour<<sys.wMinute<<sys.wSecond<<endl;可以读取当前时间,头文件#include<windows.h>,我的想法是将时间强制转化为string,进行字符串的连接之后,形成一个string h,用h 命名文件名字。强制类型转化失败了。

    5. 读取单词
      1. #include<string.h>
      2. #include<fstream>
      3. #include<iostream>
      4. using namespace std;
      5. int main(){
      6. ofstream out("words");
      7.  
      8. out<<"you are so much kind!"<<endl;
      9. out<<"guss this can be successd"<<endl;
      10. out.close(); //手动创建文件
      11.  
      12. /*cout<<"Please Enter filename:\n";//在命令行窗口输入文件
      13. string filename;
      14. cin>>filename;
      15. ifstream in(filename.c_str()) ;*/
      16.  
      17. ifstream in("words");
      18. long linenum=,chnum=,wordnum=;
      19. char str[];
      20. while(in.getline(str,)){
      21. for(int i=;i<strlen(str);i++)
      22. {
      23. chnum++;
      24. if(str[i]==' '||str[i]==','||str[i]=='!')
      25. wordnum++;
      26. }
      27. linenum++;
      28. }
      29. cout<<"行数:"<<linenum<<endl<<"字符数:"<<chnum<<endl<<"单词数:"<<wordnum<<endl;
      30. in.close();
      31. return ;
      32. }

【C++ 流类库与输入输出 】实验七的更多相关文章

  1. C++:流类库与输入输出

    7.2.1 C++的输入输出流 ios:流基类(抽象类) istream:通用输入流类和其他输入流的基类 ostream:通用输出流类和其他输出类的基类 iostream:通用输入输出流类和其他输入输 ...

  2. C++学习笔记55:流类库与输入输出

    I/O流的概念及流类库的结构 程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象,文件对象. 流是一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据 ...

  3. C++流类库(11)

    C++的流类库由几个进行I/O操作的基础类和几个支持特定种类的源和目标的I/O操作的类组成. 流类库的基础类 ios类是isrream类和ostream类的虚基类,用来提供对流进行格式化I/O操作和错 ...

  4. 流类库继承体系(IO流,文件流,串流)和 字符串流的基本操作

    一.IO.流 数据的输入和输出(input/output简写为I/O) 对标准输入设备和标准输出设备的输入输出简称为标准I/O 对在外存磁盘上文件的输入输出简称为文件I/O 对内存中指定的字符串存储空 ...

  5. C++——流类库和输入/输出

    前言 数据是怎么写道磁盘的? 代码里面我们一个读写调用似乎就能将数据从磁盘读写.仿佛代码是直接和磁盘打交道.以我们最常见的笔记本.或台式机的磁盘SATA盘为例,其受南桥上ATA控制器支配,这里面传输的 ...

  6. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验七:PS/2模块① — 键盘

    实验七:PS/2模块① — 键盘 实验七依然也是熟烂的PS/2键盘.相较<建模篇>的PS/2键盘实验,实验七实除了实现基本的驱动以外,我们还要深入解PS/2时序,还有PS/2键盘的行为.不 ...

  7. 《数据挖掘导论》实验课——实验七、数据挖掘之K-means聚类算法

    实验七.数据挖掘之K-means聚类算法 一.实验目的 1. 理解K-means聚类算法的基本原理 2. 学会用python实现K-means算法 二.实验工具 1. Anaconda 2. skle ...

  8. 实验七 MySQL语言结构

    实验七 MySQL语言结构 一.  实验内容: 1. 常量的使用 2. 变量的使用 3. 运算符的使用 4. 系统函数的使用 二.  实验项目:员工管理数据库 用于企业管理的员工管理数据库,数据库名为 ...

  9. ca76a_c++_流文件打开输入输出文件模式p773

    /*ca76a_c++_流文件打开输入输出文件模式利用文件流打开文件进行输入与输出时的选项in.out.app(附加模式).ate((end)文件打开后,定于文件结尾).trunc(裁剪).binar ...

随机推荐

  1. [物理学与PDEs]第3章习题7 快、慢及Alfv\'en 特征速度的比较

    证明: 当 $H_1\neq 0$ 及 $H_2^2+H_3^2\neq 0$ 时, 快.慢及 Alfv\'en 特征速度 $C_f$, $C_s$ 及 $C_a$ 满足 $$\bex 0<C_ ...

  2. selenium新手常遇到的坑

    本文是以Chrome为例: 1.Chrome相对应的chromedriver的版本信息[点击浏览器的右上角的浏览器信息--------帮助-------关于Google Chrome查看相对应的信息- ...

  3. 关于JS中的常用表单验证+正则表达式

    一.非空验证 trim:去空格(去掉前后的空格),任何字符串都可以用这个方法.写法为:if(v.trim().length==0),表示如果去掉空格后的字符串的长度为0. <body> & ...

  4. spring和mybatis的整合开发(基于MapperScannerConfigurer的整合开发(适用于复杂项目,接口较多的情况))

    在实际项目中,Dao层会包含很多接口,这样会导致spring配置文件过于臃肿.这时就需要采用扫描包的形式来配置mybaits中的映射器. 采用MapperScannerConfigurer来实现. M ...

  5. 新加坡100M带宽,国内延迟70ms,仅800元

    ▇ 新加坡100M带宽,延迟80msE3_8G_1TB_100M_5IP_800元促:E3_32G_1TB SSD_1200元 ▇ 马来西亚,独享带宽,延迟70msL5630_16G_1TB_15M_ ...

  6. 边缘检测之Canny

    1. 写在前面 最近在做边缘检测方面的一些工作,在网络上也找了很多有用的资料,感谢那些积极分享知识的先辈们,自己在理解Canny边缘检测算法的过程中也走了一些弯路,在编程实现的过程中,也遇到了一个让我 ...

  7. 使用SSH的scp命令行传输文件到远程服务器

    使用方式如下: 1.上传本地文件到服务器 scp /path/filename username@servername:/path/例如scp /var/www/test.php root@192.1 ...

  8. keepalived健康检查方式【转】

    keepalived具有很强大.灵活的后端检测方式,其具有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK 几种健康检测方式 ,在分别介绍各种检测方式之 ...

  9. lua分割字符串

    str = "abc;123;345" local tab = string.split(str, ";") 然后list里面就是 abc123345 了.第二 ...

  10. linux安装selenium+chrome+phantomjs

    1. 安装 selenium pip3 install selenium pip3 安装参考 2. 安装 ChromeDriver yum install chromedriver.x86_64 3. ...