读写文件这个,不常用,每次用的时候都会百度一下,每次写法还都不一样,所有总是记混。今天利用点时间总结下之前工程中用过的。以后就安照这种方法写了。

搞acmicpc的时候喜欢用freopen(),这个是c语言里面的用法如下:

#include<stdio.h>

int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int n,m;
while(cin>>n>>m){
cout<<n+m<<endl;
}
return ;
}

这样,从in.txt中读进来多组n,m 然后计算n+m再写入out.txt中,每次写入都会把之前out.txt中的数据清空。

因为,现在实习总写c++.下面说一下c++文件的读取写入操作。

文件读取写入的类库是fstream,更具体的说读取时 ifstream 写入是 ofstream

例子:

/* ***********************************************
Author :guanjun
Created Time :2017/3/18 13:32:52
File Name :33.cpp
************************************************ */
#include <bits/stdc++.h>
//#include <fstream>
using namespace std; int main(){
ofstream out("d://out2.txt");//初始化一个out对象
if(!out){ //是否正常打开
cout<<"error";
}
else{
out<<""; //写入数据
}
out.close(); //关闭
return ;
}

哎,c++11用一个<bits/stdc++.h>就可以把所有头文件都包括进来了。以上是在windows下的。linux路径格式会有区别。

有些时候,我们并不希望第二次写入的时候,之前的数据被清空。这时我们可以这么写。

例子:

/* ***********************************************
Author :guanjun
Created Time :2017/3/18 13:32:52
File Name :33.cpp
************************************************ */
#include <bits/stdc++.h>
//#include <fstream>
using namespace std; int main(){
ofstream out("d://out2.txt",ios::out|ios::app);
if(!out){
cout<<"error";
}
else{
out<<"";
}
out.close();
return ;
}

其实当 ofstream创建对象 out的时候默认ios::out,如果想用追加的方式打开的话,可以在后面加上|ios::app,像 ios::app这样的参数有很多,比如ios::binary等。 | 是或的意思。

文件读入的例子:按字符串读取,空格和换行作为分割,读到文件末尾

#include <bits/stdc++.h>
//#include <fstream>
using namespace std; int main(){
ifstream in("d://out2.txt");
if(!in){
cout<<"error";
}
else{
string s;//如果是以确定类型,这块也可以改成 int,float等
while(in>>s){
cout<<s<<endl;
}
}
in.close();
return ;
}

也可以这样,按行读取成字符串,分隔符是换行

#include <bits/stdc++.h>
//#include <fstream>
using namespace std; int main(){
ifstream in("d://out2.txt");
if(!in){
cout<<"error";
}
else{
string s;
while(getline(in,s)){
cout<<s<<endl;
}
}
in.close();
return ;
}

关于文件写入,读出其实还有很多内容,可以参考 《C++ Primer Plus  第6版  中文版》

关于cin,cout其实有

这里用一个很妙的技巧。

如何把整数装换成字符串?可以利用ostringstream啊!

ostringstream os;
os<<123;
string s="0"+os.str();
cout<<s<<endl;

输出0123

c++中读写文件操作的更多相关文章

  1. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

  2. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  3. 【转】在linux内核中读写文件 -- 不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成 ...

  4. 重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作

    原文:重新想象 Windows 8 Store Apps (24) - 文件系统: Application Data 中的文件操作, Package 中的文件操作, 可移动存储中的文件操作 [源码下载 ...

  5. 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体

    [源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...

  6. Java中的文件操作(一)RandomAccessFile

    今天,学到的是java中的文件操作. Java.IO.File Java中操作文件用到RandomAccessFile类,既可以读取文件内容,也可以向文件输出数据,但不同与普通输入/输出流的是Rand ...

  7. golang中的文件操作

    一.文件的基本介绍 文件是数据源(保存数据的地方)的一种,比如经常使用的word文档,txt文件,excel文件都是文件.文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音等等. ...

  8. PHP中读写文件

    在PHP中读写文件,可以用到一下内置函数: 1.fopen(创建文件和打开文件) 语法: 复制代码代码如下:fopen(filename,mode) filename,规定要打开的文件.mode,打开 ...

  9. Android 怎样在linux kernel 中读写文件

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

随机推荐

  1. Android Measure 体系简单总结

    Android对View的测量是半协商半强制半模糊半具体的. 测量过程中的两套尺寸体系:  [半强制] ParentView**约束ChildView: **MeasureSpec(通过measure ...

  2. Exceptions & Errors - 异常与错误

    来源于 Ry’s Objective-C Tutorial - RyPress 一个学习Objective-C基础知识的网站. 个人觉得很棒,所以决定抽时间把章节翻译一下. 本人的英语水平有限,有让大 ...

  3. Vue指令3:v-for

    列表渲染 我们用 v-for 指令根据一组数组的选项列表进行渲染.v-for 指令需要使用item in items 形式的特殊语法,items 是源数据数组并且 item 是数组元素迭代的别名. & ...

  4. spring思想分析

    摘要: EveryBody in the world should learn how to program a computer...because it teaches you how to th ...

  5. 使用lombok注解@Getter @Setter方法代码编译成功,但是没有生成get,set方法

    现象描述: 在对应类对象中,添加lombok的@Getter或@Setter注解,编译没有问题,但是在使用类对象时,没有出现对应的get或set方法. 配置且编译ok,但是没有对应的get或set方法 ...

  6. 【Redis】三、Redis安装及简单示例

    (四)Redis安装及使用   Redis的安装比较简单,仍然和大多数的Apache开源软件一样,只需要下载,解压,配置环境变量即可.具体安装过程参考:菜鸟教程Redis安装.   安装完成后,通过r ...

  7. TWaver 3D作品Viewer查看器

    为了让开发者更方便的对各类3D模型.设备.物体进行浏览和查看,我们直接封装了mono.Viewer组件.它可以直接根据给定的数据源(json.obj.url等)进行数据加载和浏览展示.对于一般的3D设 ...

  8. js实现汉字中文排序的方法 例如:省市列表的排序

    localeCompare() 1.数组内的元素是中文字符串的简单排序 var arr = ['南京', '北京', '上海', '杭州', '深圳']; function sortChinese ( ...

  9. eclipse 中导入 MyBatis 的源码

    (1)选中 Mybatis-3.2.2.jar ,右击,在弹出的快捷菜单中选择 “Properties” 选项,进入属性界面. (2)进入属性界面后,选中 “Java  Source Attachme ...

  10. SocketServer 网络服务框架

    SocketServer简化了网络服务器的编写.它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer.这4个类是同步进行处理的,另 ...