OS_ioStream

/*********************
* 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",...)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是iostream头文件的源码: ```cpp #ifndef _IOSTREAM_H #define _IOSTREAM_H #include <ios> // basic_ios, streampos, streamoff, etc. #include <streambuf> // basic_streambuf #include <istream> // basic_istream #include <ostream> // basic_ostream #include <cstdio> // EOF, FILE #include <wchar.h> // wchar_t namespace std { extern istream cin; // standard input stream extern ostream cout; // standard output stream extern ostream cerr; // standard error (output) stream extern ostream clog; // standard logging (output) stream template <class charT, class traits = char_traits<charT>> class basic_iostream : public basic_ios<charT, traits> { public: using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; using off_type = typename traits::off_type; using traits_type = traits; // constructors explicit basic_iostream(basic_streambuf<charT, traits>* sb); virtual ~basic_iostream(); // delete copy and move constructors and assignments basic_iostream(const basic_iostream&) = delete; basic_iostream& operator=(const basic_iostream&) = delete; basic_iostream(basic_iostream&&) = delete; basic_iostream& operator=(basic_iostream&&) = delete; // basic_iostream operations basic_ios<charT, traits>* tie() const; basic_ios<charT, traits>* tie(basic_ios<charT, traits>* tiestr); basic_streambuf<charT, traits>* rdbuf() const; void rdbuf(basic_streambuf<charT, traits>* sb); // conversions operator void*() const; bool operator!() const; // unformatted input int_type get(); basic_iostream<charT, traits>& get(char_type& c); basic_iostream<charT, traits>& get(char_type* s, streamsize n); basic_iostream<charT, traits>& get(char_type* s, streamsize n, char_type delim); basic_iostream<charT, traits>& getline(char_type* s, streamsize n); basic_iostream<charT, traits>& getline(char_type* s, streamsize n, char_type delim); basic_iostream<charT, traits>& ignore(streamsize n = 1, int_type delim = traits::eof()); basic_iostream<charT, traits>& read(char_type* s, streamsize n); streamsize readsome(char_type* s, streamsize n); // unformatted output basic_iostream<charT, traits>& put(char_type c); basic_iostream<charT, traits>& write(const char_type* s, streamsize n); // formatted input basic_iostream<charT, traits>& operator>>(basic_ios<charT, traits>& (*pf)(basic_ios<charT, traits>&)); basic_iostream<charT, traits>& operator>>(basic_istream<charT, traits>& (*pf)(basic_istream<charT, traits>&)); basic_iostream<charT, traits>& operator>>(basic_streambuf<charT, traits>* sb); basic_iostream<charT, traits>& operator>>(bool& n); basic_iostream<charT, traits>& operator>>(short& n); basic_iostream<charT, traits>& operator>>(unsigned short& n); basic_iostream<charT, traits>& operator>>(int& n); basic_iostream<charT, traits>& operator>>(unsigned int& n); basic_iostream<charT, traits>& operator>>(long& n); basic_iostream<charT, traits>& operator>>(unsigned long& n); basic_iostream<charT, traits>& operator>>(long long& n); basic_iostream<charT, traits>& operator>>(unsigned long long& n); basic_iostream<charT, traits>& operator>>(float& f); basic_iostream<charT, traits>& operator>>(double& f); basic_iostream<charT, traits>& operator>>(long double& f); basic_iostream<charT, traits>& operator>>(void*& p); basic_iostream<charT, traits>& operator>>(basic_ios<charT, traits>& (*pf)(basic_ios<charT, traits>&)); basic_iostream<charT, traits>& operator>>(basic_istream<charT, traits>& (*pf)(basic_istream<charT, traits>&)); basic_iostream<charT, traits>& operator>>(basic_streambuf<charT, traits>* sb); // formatted output basic_iostream<charT, traits>& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT, traits>&)); basic_iostream<charT, traits>& operator<<(basic_ostream<charT, traits>& (*pf)(basic_ostream<charT, traits>&)); basic_iostream<charT, traits>& operator<<(basic_streambuf<charT, traits>* sb); basic_iostream<charT, traits>& operator<<(bool n); basic_iostream<charT, traits>& operator<<(short n); basic_iostream<charT, traits>& operator<<(unsigned short n); basic_iostream<charT, traits>& operator<<(int n); basic_iostream<charT, traits>& operator<<(unsigned int n); basic_iostream<charT, traits>& operator<<(long n); basic_iostream<charT, traits>& operator<<(unsigned long n); basic_iostream<charT, traits>& operator<<(long long n); basic_iostream<charT, traits>& operator<<(unsigned long long n); basic_iostream<charT, traits>& operator<<(float f); basic_iostream<charT, traits>& operator<<(double f); basic_iostream<charT, traits>& operator<<(long double f); basic_iostream<charT, traits>& operator<<(const void* p); basic_iostream<charT, traits>& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT, traits>&)); basic_iostream<charT, traits>& operator<<(basic_ostream<charT, traits>& (*pf)(basic_ostream<charT, traits>&)); basic_iostream<charT, traits>& operator<<(basic_streambuf<charT, traits>* sb); }; // typedefs using iostream = basic_iostream<char>; using wiostream = basic_iostream<wchar_t>; // manipulators extern basic_istream<char>& ws(basic_istream<char>& is); extern basic_istream<wchar_t>& ws(basic_istream<wchar_t>& is); // object instances extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; // non-member functions template <class charT, class traits> basic_istream<charT, traits>& flush(basic_istream<charT, traits>& is); template <class charT, class traits> basic_ostream<charT, traits>& flush(basic_ostream<charT, traits>& os); template <class charT, class traits> basic_istream<charT, traits>& ws(basic_istream<charT, traits>& is); template <class charT, class traits> void swap(basic_ios<charT, traits>& a, basic_ios<charT, traits>& b) noexcept; } #endif /* _IOSTREAM_H */ ``` 该头文件定义了C++标准输入输出流(cin、cout、cerr、clog)以及基本的输入输出流对象。同时还定义了一系列输入输出的操作符和控制符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值