part 1 验证性实验

合并两个文件。虽说验证,但后两个实验均受该代码指导启发。

part 2  文末添加数据

1、代码

 #include<fstream>
#include<iostream>
#include<string>
using namespace std;
int main()
{
ofstream out("C:\\Users\\lenovo\\Desktop\\实验六\\实验六part1\\实验六part1\\3.txt",ios_base::app);
if (!out)
{
cout << "Fail to open." << endl;
return ;
}
out << endl;
out << "merge successfully";
out.close();
return ;
}

part 2

2、程序截图

3、知识点

①“打开一个与输出流相关的文件时,可以指定一个open_mode标志,实现一些特定模式。用 ‘ | ’组合多个。 ”本题需要在文件尾添加数据,即“ios_base::app”。

②路径写法注意双斜杠,为了与转义字符相区别。

Part 3

一、随机抽取

1、代码

 #include<iostream>
#include<fstream>
#include<string>
#include<ctime>
#include<sstream>
#include<windows.h>
using namespace std;
string getdate();
int main()
{
string filename, newfilename;//f是已存在的名单文件,new是即将存随机抽取的文件
int n, i; ofstream out;
ifstream in; cout << "输入名单列表文件名:";
cin >> filename;
cout << "输入随机抽点人数:";
cin >> n;
cout << "随机抽点中···" << endl; newfilename = getdate().c_str();//新建文件命名 out.open(newfilename);
if (!out.is_open())
{
cout << "Fail to open." << endl;
return ;
} for (i = ; i <= n; i++)
{
in.open(filename);
if (!in.is_open())
{
cout << "Fail to open." << endl;
return ;
} srand((unsigned)time(NULL));
int N = rand() % ; string s;
stringstream ss;
ss << N;
ss >> s; char c;
int j=;
while (in.get(c))
{
if (c == '\n')
{
j++;
if (j == N)
{
in.get(c);
while (c != '\n')
{
out << c;
in.get(c);
}
out << endl;
break;
}
}
else
continue;
}
in.close();
Sleep();
}
out.close(); char c;
ifstream nfile(newfilename);
while (nfile.get(c))
cout << c;
nfile.close();
return ;
}
const int SIZE1 = ;
string getdate()
{
time_t time_seconds = time();
struct tm now_time;
localtime_s(&now_time, &time_seconds); // 使用了更安全的localtime_s()
char date[SIZE1];
strftime(date, SIZE1, "%Y%m%d", &now_time);
return (string(date));
}

part 3.1

2、程序截图

3、出现的一些问题

①查找相应标号的同学,最开始想得简单,是通过简单对比数字,后来发现学号里也有数字。(有点儿傻的过分了)后来纠正的一些方法不如数行数更简便,最终就由数行数来找对应的同学。

②输入流文件打开操作 在n次抽取循环的外面,导致in.get(c)是接着数的。例如:

我机智的发现应该把 打开list  和 打开20190611 两个操作都放循环里面,每次循环就可以重新打开重新数。我还特别机智的立即想到也要在里面关闭两个文件,结果只保留了最后一个抽取的情况。例如:

循环哪个地方每次都会清空内容。翻课本时惊现不久前的笔记,输出流中隐含指定的模式是ios_base::out,当使用该模式打开已存在的文件时,内容清空。解决可以用part 2中的追加模式。

我是只把list打开关闭操作放在循环内。

③每次随机数取的差不多。例如:

我猜是随机数取的系统时间精度不那么高,程序运行又很快。不知道对不对地 人为的 让它每次取随机数前延迟一阵子。用了Sleep函数,感觉嗯,慢的过分了。

最终结果就如代码 and 截图。

二、统计单词

1、代码

 #include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
string filename;
char c; cout << "输入要统计的英文文本文件名:";
cin >> filename; int a = , b = , s = ;//a字符数 b单词数 c行数 ifstream in;
in.open(filename);
if (!in)
{
cout << "Fail to open." << endl;
return ;
} while (in.get(c))
{
if (c != '\n')
a++;
if (c == '\n')
s++;
if (c == ' ' || c == '\n' || c == '\t')
{
in.get(c);
a++;
if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
{
b++;
}
}
}
cout << "字符数:" << a << endl;
cout << "单词数:" << b << endl;
cout << "行数:" << s << endl;
return ;
}

part 3.2

2、程序结果截图

3、一点说明

没有用getline等等,就全一个一个数的,一次性全数完。

总结

1、学流类库之前认为插入提取用<<或者>>就是刻板规定,而且学习之初形象理解认为 输出 大概用>>更形象,所以很多时候还会打反。在学习流类库的时候也混,怎么它就是输出流文件,不是往它里面打字cin吗/扶额/。尤其做完实验才有点儿理解,明白为什么cin后跟提取,cout后跟插入,也就是你提取资料是输入,你把资料筛选出的内容插入到新文件,又是输出。

2、做实验总会有做oj的错觉,我会不会少打了回车啊,好像落了句号啊.../叹气/。

3、程序错乱或者漏洞可以直接指出,谢谢。

后继更新。

回顾知识点的时候参考博客https://blog.csdn.net/w_linux/article/details/72793651

评价

1、https://www.cnblogs.com/q1831726125/p/11044621.html

2、https://www.cnblogs.com/yidaoyigexiaopenyou/p/11044639.html

3、https://www.cnblogs.com/cjj1/p/11043693.html

c++第六次实验的更多相关文章

  1. 201521123122 《java程序设计》 第六周实验总结

    201521123122 <java程序设计>第六周实验总结 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想 ...

  2. 20135302魏静静——linux课程第六周实验及总结

    linux课程第六周实验及总结 实验及学习总结 1.进程描述符task_struct数据结构 进程的作用: 将信号.进程间通信.内存管理和文件系统联系起来 操作系统的三大功能: 进程管理.内存管理.文 ...

  3. 第八周作业总结&第六次实验报告

    实验六 Java异常 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类 ...

  4. 201621123054 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. 2 ...

  5. 201621123044 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  6. 实验六 MapReduce实验:二次排序

    实验指导: 6.1 实验目的基于MapReduce思想,编写SecondarySort程序. 6.2 实验要求要能理解MapReduce编程思想,会编写MapReduce版本二次排序程序,然后将其执行 ...

  7. 201621123008 《Java程序设计》第六周实验总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 在 ...

  8. 201871010121-王方-《面向对象程序设计java》第十六周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...

  9. 第六周&实验四

    二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆的半径. 2.圆类Circle的方法成员: Circle():构造方法,将半径置0 Cir ...

随机推荐

  1. 分享知识-快乐自己:Shrio 案例Demo概述

    Shiro 权限认证核心: POM:文件: <!--shiro-all--> <dependency> <groupId>org.apache.shiro</ ...

  2. mfc创建文档视图过程

    一.如何创建文档视图界面: 创建新的文档视图界面,只需要调用CDocTemplate::OpenDocumentFile(strpath)即可.(strpath为要打开的文档路径,如果是NULL,则生 ...

  3. codeforces 627B B. Factory Repairs(线段树)

    B. Factory Repairs time limit per test 4 seconds memory limit per test 256 megabytes input standard ...

  4. Java中的参数传值方式

    本文转载自 https://blog.csdn.net/SEU_Calvin/article/details/70089977 1.  你觉得下面程序会输出什么 public static void  ...

  5. P2P流媒体开源项目介绍

    P2P流媒体开源项目介绍1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据.节 ...

  6. bzoj 2794: Cloakroom dp

    题目: 有\(n\)件物品,每件物品有三个属性\(a_i,b_i,c_i,(a_i < b_i)\) 再给出\(q\)个询问,每个询问由非负整数\(m,k,s\)组成,问是否能够选出某些物品使得 ...

  7. 【Tensorflow】Ubuntu 安装 Tensorflow gpu

    安装环境:Ubuntu 16.04lts 64位,gcc5.4 1.安装Cuda 1. 下载cuda toolkit. 下载cuda8.0 地址:https://developer.nvidia.co ...

  8. Missing key(s) in state_dict: Unexpected key(s) in state_dict

    如果加载的预训练模型之前使用了torch.nn.DataParallel(),而此时的训练并没有使用,则会出现这样的错误.解决方案有两个:1:此时的训练加入torch.nn.DataParallel( ...

  9. 冷备手工完全恢复(recover database,recover tablespace,recover datafile)

    冷备手工完全恢复 1.   手工完全恢复三种级别: recover database: 所有或大部分datafile丢失,一般是在mount状态完成.recover tablespace:    非关 ...

  10. androidpn环境搭建

    1.下载androidpn版本.http://sourceforge.net/projects/androidpn/postdownload?source=dlp 2.下载安装tomcat 2.1 下 ...