OS_ioStream

原创 2016年05月31日 20:17:44
/*********************
* file io strema [cpp]
**********************/
#include <fstream>

1. 文件打开:
fstream file("a.txt", ios::in|ios::out);
fstream file; file.open("a.txt",ios::in|ios::out);

ios::in    //供读,文件不存在则创建(ifstream默认的打开方式)
ios::out    //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式)
ios::ate    //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
ios::app    //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后
ios::trunc   //在读写前先将文件长度截断为0(默认)
ios::nocreate //文件不存在时产生错误,常和in或app联合使用
ios::noreplace //文件存在时产生错误,常和out联合使用
ios::binary  //二进制格式文件

ios::app ----- 不能同时给read,指针已到最后,read不到数据
iOS::nocreate ios::noreplace 不是平台通用,注意

//检查成功失败
if (file)
if (file.good())

if (!file)
if (file.fail())
file.good()
file.bad()
file.eof()



2. 文件关闭
file.close()


3. 文件seek
file.seekg(绝对位置)
file.seekg(相对位置,参照位置)
file.seekg(ios::end)
file.seekg(5,ios::beg)
int pos = file.tellg() //返回指针位置k

//参照位置:
ios::beg
ios::end
ios::cur


4. 文件读写
file.read(char*, int length)
file.write(char*, int length)
file.getline(char*, int length) //若length很长,读到'\n‘结束
file.get(char)
file.put(char)

5. gcount
cin.get 后 cin.gcount()
file.read 后 file.gcount()


/*************
* IO stream
**************/
1. cin/cout/cerr [ stdin/stdout/stderr]

cin.get(char* , int size) //只能读size-1个数据,最后一个是'\0'
cin.getline(char* int size)
cin.get() //将你输入的换行符\n也放进了cin buffer里,这次get没问题,后面再调用cin.get()将首先得到\n
cin.getline()//将输入的换行符抛弃,所以下次再调用cin.get() 就没问题
//总结:cin.get()连续的重复调用不行
#include <string> getline(cin,string&) //这个没size限制,跟gets一样有安全问题



/**************
* string stream
***************/
1. int/double 转 string

template<typename T>
void to_string(string& str, const T& t){
    stringstream ss;
    ss.clear();
    ss<<t;
    ss>>str;    
}


/******************
* file IO stream [c]
*******************/
1. FILE* fp = fopen("note.cpp","a+");
2. fgets(char* , int size, fp);
3. fputs(char* , fp);//no size parameter

//demo code
char buf[100];
fgets(buf, 100, fp)
fputs(buf, fp);

string s;
s.reserve(100);
fgets((char*)s.c_str(), 100, fp);
fputs((char*)s.c_str(),fp);

/*********
*binary IO
**********/
//针对结构体等数据类型(非字符串)
4. size_t fread(void*, size_t, int num_obj, FILE*) //数据指针,单个类型大小,读写几个类型,fp
5. size_t fwrite(void*, size_t, int num_obj, FILE*)
//demo code
float data[10];
if(fwrite(&data[1], sizeof(float), 4, fp) != 4) err_sys("fwrite error");

struct{
    short a;
    int b;
}item;
fwrite(&item, sizeof(item), 1, fp)

/*********
* snprintf
***********/
6. int snprintf(char* buf, size_t n, "%d",...)

相关文章推荐

详解iostream

  • 2012年08月14日 23:53
  • 227KB
  • 下载

iostream 输入输出流

  • 2011年11月01日 15:38
  • 124KB
  • 下载

c++ stl iostream 使用笔记一

我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象...

C++ iostream

  • 2011年04月21日 21:36
  • 248KB
  • 下载

IOstream及附属&Cstdio用法

傻逼写的使用技巧。

[转]20110324-C++的iostream标准库介绍(1)

C++的iostream标准库介绍(1)

c++ primer第五版(中文)习题答案 第十章第四节第二小节-iostream迭代器

本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。 本节主要学习迭代器iostream迭代器学习笔记: 虽然iostream类型不是容器,但是标准库定义了可以用于这些io类对象的迭...
  • xhxwd
  • xhxwd
  • 2015年10月13日 23:58
  • 931

#include <iostream> using namespace std; C++命名空间是什么?

C++命名空间是什么? 命名空间, 就是把一些 class 变量 对象 等 归类 到 某 “空间”,也就是规入一个组。 想用某组时,用 using .... 表明。 例如: 命名空间...
  • YJB666
  • YJB666
  • 2014年06月12日 13:06
  • 1648

iostream/fstream中的输入输出流指针的绑定,tie函数的使用。

为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的。当执行cin时,cout同时会被执行。反之亦然。 by defalut,cin is tied t...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OS_ioStream
举报原因:
原因补充:

(最多只允许输入30个字)