当前位置: 首页 > 编程日记 > 正文

《C++程序设计POJ》《WEEK7 输入输出和模板》《流操纵算子》《文件读写》《二进制文件读写》...

函数指针,运算符重载

人懂我精,人精我深

用的时候查一查手册

dat 二进制文件

如果不指定文件夹,就是生成在当前文件夹,什么是当前文件夹?可执行文件所在的文件夹

绝对路径

相对路径

文件的读写指针

ifstream

ofsteam

seekp()

location 可正负 , 正 往后  负代表 往开头

ios::ate 定位文件指针到文件尾

seekg()????

C++中seep()和seekg()函数功能

seekp:设置输出文件流的文件流指针位置   写指针
seekg:设置输入文件流的文件流指针位置   读指针

ios::in 读

ios::out 写

文件关闭!!!!

数据在内存缓冲区,硬盘很慢,缓冲区满了在写入到硬盘。达到打开文件上限,再也打不开文件了

ios::binary 如果不写这个会有麻烦

write(为什么是 (const char *))

/*设置域宽的流操纵算子*/
#include<iostream>
#include<iomanip>using namespace std;
/*
宽度设置有效性是一次性的,在每次读入和
输出之前都要设置宽度。
输入
1234567890
输出
1234
5678
90
*/
int main()
{int w = 4;char string[10];cin.width(5);while (cin >> string){cout.width(w++);cout << string << endl;cin.width(5);}
}

/*
1) 8d 141 215
2) 1.2346e+006 12.346
3) 1234567.89000 12.34567
4) 1.23457e+006 1.23457e+001
*/
#include<iostream>
#include<iomanip>
using namespace std;int main()
{//1)分别以十六进制、十进制、八进制先后输出 nint n = 141;cout << "1)" << hex << n << " " << dec << n << " " << oct << n << endl;double x = 1234567.89, y = 12.34567;//2)保留 5 位有效数字cout << "2)" << setprecision(5) << x << " " << y << " " << endl;//3)保留小数点后面 5 位cout << "3)" << fixed << setprecision(5) << x << " " << y << endl;//4)科学计数法输出,且保留小数点后面 5 位cout << "4)" << scientific << setprecision(5) << x << " " << y << endl;//5)非负数要显示正号,输出宽度为 12 字符,宽度不足则用 填补cout << "5)" << showpos << fixed << setw(12) << setfill('*') << 12.1 << endl;//6)非负数不显示正号,输出宽度为 12 字符,宽度不足则右边用填充字符填充cout << "6)" << noshowpos << setw(12) << left << 12.1 << endl;//7)输出宽度为 12 字符,宽度不足则左边用填充字符填充cout << "7)" << setw(12) << right << 12.1 << endl;//8)宽度不足时,负号和数值分列左右,中间用填充字符填充cout << "8)" << setw(12) << internal << -12.1 << endl;cout << "9)" << 12.1 << endl;return 0;}
/*
5) ***+12.10000
6) 12.10000****
7) ****12.10000
8)
--***12.10000
9) 12.10000
*/

cout << "3)" << fixed << setprecision(5) << x << " " << y << endl;
对后面所有输出都有影响??12.10000

自定义流操纵算子?

函数指针?

/*
函数指针
用户自定义流操纵算子
因为 iostream 里对 << 进行了重载 成员函数)输出:
aa    bb
*/
#include<iostream>
using namespace std;ostream &tab(ostream &output)
{return output << '\t';
}
int main()
{cout << "aa" << tab << "bb" << endl;return 0;
}/*
ostream & operator<<( ostream & (*p) (ostream &) );
该函数内部会调用p 所指向的函数,且以 *this 作为参数
*/

 文件读写

创建文件

•#include fstream > // 包含头文件

ofstream outFile (“clients.dat”, ios out|ios ::binary);
创建文件

clients.dat” 要创建的文件的名字

ios ::out 文件打开方式

ios:out 输出到文件 , 删除原有内容

ios ::app 输出到文件 , 保留原有内容,总是在尾部添加

ios ::binary 以二进制文件格式打开文件

也可以先创建 ofstream 对象,再用 open 函数打开
ofstream fout

fout.open(test.out",ios out|ios ::binary)

判断打开是否成功:
if(!fout)

{

cout<<"file open error"<<enl;

}
文件名可以给出绝对路径,也可以给相对路径。没有交代路径信息,
就是在当前文件夹下找文件

文件流

ios::app

ios::ate

打开方式

结果

打开方式

结果

ofstream

(默认是ios::in | ios::trunc)

ios::app或ios::app|ios::out

如果没有文件,生成空文件;

如果有文件,在文件尾追加

ios::ate或ios::ate|ios::out

如果没有文件,生成空文件;

如果有文件,清空该文件

ios::app|ios::in

不管有没有文件,都是失败

ios::ate|ios::in

如果没有文件,打开失败;

如果有文件,定位到文件尾,可以写文件,但是不能读文件

Ifstream

(默认是ios::in)

ios::app或ios::app|ios::out

不管有没有文件,都是失败

ios::ate或ios::ate|ios::out

如果没有文件,打开失败;
如果有文件,定位到文件尾,但是不能写文件

ios::app|ios::in

?

ios::ate|ios::in

?

fstream

(默认是ios::in | ios::out)

ios::app|ios::out

如果没有文件,创建文件;

如果有文件,在文件尾追加

ios::ate|ios::out

如果没有文件,创建文件;

如果有,清空文件

ios::app|ios::in

如果没有文件,失败

ios::ate|ios::in

如果没有文件,失败

N/A

N/A

ios::ate|ios::out|ios::in

如果没有文件,打开失败,

如果有文件,定位到文件尾

总结

ios::app不能和ios::in相配合,

但可以和ios::out配合,打开输入流

ios::ate可以和ios::in配合,此时定位到文件尾;

如果没有ios::in相配合而只是同ios::out配合,那么将清空原文件;

区别

app会在每次写操作之前都把写指针置于文件末尾,

而ate模式则只在打开时才将写指针置于文件末尾。在文件操作过程中,可以通过seekp等操作移动指针位置。

例子:

多个线程或者进程对一个文件写的时候,假如文件原来的内容是abc

以ios::app:

第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果是abcde

以ios:ate:

后面写的会覆盖前面一个写的,第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果为abce

/*
写一个程序,将文件 in.txt 里面的整数排序后,输出到
out.txt
*/
#include<iostream>
#include<fstream> // file operate
#include<vector> 
#include<algorithm>
using namespace std;
int main()
{vector<int> v;ifstream srcFile("in.txt", ios::in);ofstream destFile("out.txt", ios::out);int x;while (srcFile >> x){v.push_back(x);}sort(v.begin(), v.end());for (int i = 0; i < v.size(); i++)destFile << v[i] << " ";destFile.close();srcFile.close();return 0;
}

转载于:https://www.cnblogs.com/focus-z/p/11123405.html

相关文章:

linux内存管理 之 内存节点和内存分区(Zone)

https://www.cnblogs.com/youngerchina/p/5624516.html Linux支持多种硬件体系结构&#xff0c;因此Linux必须采用通用的方法来描述内存&#xff0c;以方便对内存进行管理。为此&#xff0c;Linux有了内存节点、内存区、页框的概念&#xff0c;这些概念也是一目了然的。 内存节…

BZOJ 3585: mex( 离线 + 线段树 )

离线, 询问排序.先处理出1~i的答案, 这样可以回答左端点为1的询问.完成后就用seq(1)将1到它下一次出现的位置前更新. 不断这样转移就OK了--------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define M(l, r…

yum安装mysql后密码_Centos7:yum安装MySQL5.7后如何设置root密码

Centos下安装软件的方式很简单&#xff0c;只需要通过yum install xxx命令即可。第一步当然检查是否有mysql的yum源&#xff0c;命令&#xff1a;yumlist|grep mysql-community[主要还是安装开源的社区版]如果没有如图所示的和mysql*相关的数据源&#xff0c;可去官网上下载相关…

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多&#xff0c;其中传值只是其中的一小部分&#xff0c;下面介绍Block在两个界面之间的传值&#xff1a;先说一下思想&#xff1a;首先&#xff0c;创建两个视图控制器&#xff0c;在第一个视图控制器中创建一个UILabel和一个UIButton&#xff0c;其中UILabel…

Vscode 调试 Flutter 项目

1、Vscode 中打开 flutter 项目进行开发 2、运行 Flutter 项目 flutter run r 键:点击后热加载&#xff0c;也就算是重新加载吧。p 键:显示网格&#xff0c;这个可以很好的掌握布局情况&#xff0c;工作中很有用。 o 键:切换 android 和 ios 的预览模式。q 键:退出调试预览模…

Linux地址映射--线性映射与非线性映射

一&#xff0c;线性映射与非线性映射 1. 内存管理 物理内存管理&#xff1a; Linux内存最小管理单位为页&#xff08;page&#xff09;&#xff0c;通常一页为4K。初始化时&#xff0c;linux会为每个物理内存也建立一个page的管理结构&#xff0c;操作物理内存时实际上就…

第三方消息推送回调Java app消息推送第三方选择

由于最先集成的是极光,因此根据官方给的推送设备区分方式中,选择了使用标签tag来进行区分管理方式,其接口提供了设置和清理标签, 每次设置会覆盖上次的结果,当然这个需要和极光后台进行交互,是异步返回的。5、由于其接口没有使用免费和付费区分,对于接口的访问没有限制,从使用的情况来看,经常会出现不准的情况,并且设置标签的效果其实是添加,导致业务需要改变标签时,需要先清除在设置,然而接口又经常出问题,导致这部分也是一塌糊涂了;如果想使用不受免费版本限制特性的推送服务,可以联系平台提供的商务对接,购买付费版本。

[SDOI2015]权值

问题描述&#xff1a; 有一个长度为n的实数序列&#xff0c;,下标从1开始&#xff0c;其中第k个位置的实数为p (sin(a k b) cos(c k d) 2)&#xff0c;sin和cos采用弧度制&#xff0c;其中p&#xff0c;a&#xff0c;b&#xff0c;c&#xff0c;d均为给定的整数。你需要…

为什么前后端都需要进行数据校验?

前端和后端各自的数据完整性校验是相辅相成的。前端校验可以提供即时反馈和优化用户体验,减轻后端服务器压力;后端校验是最终的安全防线,确保数据的完整性和一致性。通过前后端的数据完整性校验机制的结合,可以提供更可靠和安全的应用程序。

多个网站共享一个mysql数据库_如何在多个Postgresql数据库之间共享表

是的,模式是解决方案.使用单个Postgresql集群,使用单个数据库.为所有应用用户创建一个组&#xff1a;CREATE ROLE app;创建全局“应用程序”模式,其中所有全局共享应用程序表都将生效.CREATE SCHEMA AUTHORIZATION app;CREATE TABLE app.objects ( objectid int PRIMARY KEY );…

solr安装-tomcat+solrCloud构建稳健solr集群

solrCloud的搭建可以有两种方式&#xff1a;使用solr内嵌的jetty来搭建&#xff1b;使用外部web容器tomcat来搭建。对于使用jett来搭建参考solr官方的手册照着做肯定ok&#xff0c;下面我主要讲的是如何使用tomcat来搭建solrCloud。废话不多说&#xff0c;开始我们的工作&#…

[pytorch][stepbystep]在pytorch上实现卷积神经网路(CNN)的裁剪(purning)

利用VGG-16对Dogs-vs-Cats数据集进行训练&#xff0c;裁剪VGG-16可以获得3x的运算加速和4x的模型减小 简介 puring神经网络是一个古老的idea,具体可以追溯到1990年&#xff08;与Yann LeCun的最佳脑损伤[1]工作&#xff09;。这个想法是&#xff0c;在网络中的许多参数中&#…

linux内存布局及页面映射

在Linux系统中&#xff0c;以32bit x86系统来说&#xff0c;进程的4GB内存空间&#xff08;虚拟地址空间&#xff09;被划分成为两个部分 ------用户空间和内核空间&#xff0c;大小分别为0-3G&#xff0c;3-4G。用户进程通常情况下&#xff0c;只能访问用户空间的虚拟地址&…

codeforces Kyoya and Colored Balls

题解见&#xff1a;http://blog.csdn.net/libin56842/article/details/46650209 注意这里的组合数取模~~~ 1 /*Author :usedrose */2 /*Created Time :2015/8/7 13:31:44*/3 /*File Name :2.cpp*/4 #pragma comment(linker, "/STACK:1024000000,1024000000") 5 #inc…

存储mysql数据存在特殊字符时处理_转义 存储数据时特殊符号的处理

function url_base64_encode($str){//将这个方法处理后的数据可以存储&#xff0c;不会有特殊符号if($str"")return "";$codebase64_encode($str);//$codedHQ;$codestr_replace(,"!",$code);//把所用""替换成"!"$codestr_re…

虚拟化中的SR-IOV

虚拟化环境中有很多的硬件加速技术&#xff0c;这些技术标准来源于行业内的领导者或各种组织机构&#xff0c;但是在实际项目落地时又有哪些会被启用呢&#xff1f;哪些启用的功能带来了性能上明显的提升呢&#xff1f;那么这些加速技术如果不痛不痒的话那么它们的存在究竟意义…

查看线程的运行状态

实例说明线程共有六个状态&#xff0c;即新建、运行&#xff08;可运行&#xff09;、阻塞、等待、计时等待和终止。当使用new操作符创建新线程时&#xff0c;线程处于“新建状态”。当调用start方法时&#xff0c;线程处于运行&#xff08;可运行&#xff09;状态。当线程需要…

Linux 的内存管理工具和调优参数

1. free 2. top 3. vmstat 4. slabtop; 5. pmap 6. dmesg 7. /proc/meminfo 8. /proc/sys/vm 目录下的文件 9. sync 10./proc/zoneinfo 11./proc/pagetypeinfo 查看内存工具&#xff1a;1.free free - Display amount of free and used memory in the system rootubuntu:/home/…

java多线程查询_利用Java函数式接口处理多线程查询

Java函数式接口有且只有一个抽象方法的接口被称为函数式接口.FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是否确实有且仅有一个抽象方法, 否则将会报错.该注解不是必须的, 只要符合函数式接口的定义,那么这个…

奇妙的算法之LCS妙解

LCS算法妙解 LCS问题简述&#xff1a;最长公共子序列 一个数列 S&#xff0c;如果分别是两个或多个已知数列的子序列&#xff0c;且是所有符合此条件序列中最长的&#xff0c;则S 称为已知序列的最长公共子序列。 LCS问题的分支&#xff1a;最长公共子串与最长公共子序列 子串&…

关于PreferenceActivity的使用和一些问题的解决(自己定义Title和取值)

android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android"http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title"常规设置" android:key"set_local">&…

python学习-25 函数递归

递归 例如&#xff1a; def abc(n):print(n)if int(n/2) 0:return nreturn abc(int(n/2))abc(10) 运行结果&#xff1a; 10 5 2 1Process finished with exit code 0 2.小程序实例 import time people_list [小明,小红,小刚,小王,小青]def ask(people_list):if len(people_li…

二维指针删除单向链表

Linus slashdot: https://meta.slashdot.org/story/12/10/11/0030249 原文&#xff1a; https://coolshell.cn/articles/8990.html Linus大婶在slashdot上回答一些编程爱好者的提问&#xff0c;其中一个人问他什么样的代码是他所喜好的&#xff0c;大婶表述了自己一些观点…

对比java_java集合对比

list与Set、Map区别及适用场景1、List,Set都是继承自Collection接口&#xff0c;Map则不是2、List特点&#xff1a;元素有放入顺序&#xff0c;元素可重复 &#xff0c;Set特点&#xff1a;元素无放入顺序&#xff0c;元素不可重复&#xff0c;重复元素会覆盖掉&#xff0c;(注…

.ARM.exidx

简介&#xff1a; .ARM.exidx is the section containing information for unwinding the stack. If your C program has functions that print out a stack backtrace, the functions will likely depend on this section being present. 相关的编译选项 -funwind-tables 二问…

Oracle VM VirtualBox安裝Windows 2000失败

问题&#xff1a;VirtualBox下安装Windows2000&#xff0c;设置网络后进入最后一步&#xff0c;复制组件……然后就是重启&#xff1b;再试还是重启&#xff01;解决&#xff1a;在Oracle网站上查了一下资料&#xff1a;http://www.virtualbox.org/manual/ch12.html#idp1278616…

用户/目录操作

用户操作 useradd/adduser 创建用户 passwd 修改用户密码 userdel 删除用户 usermod 修改用户信息 -g<群组> 修改用户所属群组 -G<群组> 修改用户所属的附加群组 -l<帐户名> 修改账户名称 -u 修改用户ID -L锁定用户密码 -U 解除密码锁定 adduser -u用…

linux内核 -内存管理模块概图

1.从进程(task)的角度来看内存管理 每个进程对应一个task_struct;每个task_struct 里面包含指向mm_struct 的指针mm, mm_struct 里面的主要成员&#xff1a; a. 指向vma链表的头指针&#xff1a;mmap b. 指向vma红黑树的根节点: mm_rb c. 指向进程列表的指针pgb;vma(vm_are…

求一个字符串中连续出现的次数最多的子串

求一个字符串中连续出现的次数最多的子串。例如字符串“abababc”,最多连续出现的为ab&#xff0c;连续出现三次。要和求一个字符串中的最长重复子串区分开来&#xff0c;还是上面的字符串&#xff0c;那么最长的重复子串为abab。两个题目的解法有些类似&#xff0c;都用到了后…

java ftp 判断文件是否存在_FTP判断文件是否存在

FTP Client使用的是Apache Commons Net 3.3/*** 检查FTP上指定文件是否存在* param remoteFilePartNameList 文件路径* throws BusinessException* throws IOException*/private void checkFtpFileExist(List remoteFilePartNameList) throws BusinessException, IOException {…