`
rothmada
  • 浏览: 83804 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C++之标准IO库

    博客分类:
  • C++
 
阅读更多

C++之标准IO库

 

一、概述

C++的输入/输出(input/output)由标准库提供。

多种IO标准库工具:

  • istream,提供输入操作
  • ostream,提供输出操作
  • cin:读入标准输入的istream对象
  • cout:写到标准输出的ostream对象
  • cerr:输出标准错误的ostream对象。常用语程序错误信息
  • >>,用于从istream对象中读入输入
  • <<,用于把输出写到ostream对象中
  • getline,功能是从istream对象读取一个单词,然后写入string对象中

二、面向对象的标准库


 

1.国际字符的支持

流类(stream class)读写都是由char类型组成的流。

标准库还定义了一组相关的类型,支持wchar_t类型。每个类都加上“w”前缀以此区分。

控制窗口读写:wostream,wistream,wiostream

文件输入输出:wofstream,wifstream,wfstream

String输入输出:wostirngstream,wistringstream,wstringstream

对象:wcin,wcout,wcerr

 

2.IO对象不可复制或赋值

流对象不能存储在vector或其他容器中。

形参或返回类型也不能为流类型,如果需要,则必须传递或返回指向该对象的指针或引用

if(cin)
	//ok to use cin, it is in a valid state
while(cin >> word)
	//ok:read operation successful…

流的状态由bad,fail,eof,good操作揭示。

bad:系统级的故障

fail:可恢复的错误

eof:遇到文件结束符,通常还会设置fail

clear:重设为有效条件

setstate:打开某个指定的条件,用于表示某个问题的发

 

1.条件状态的访问

rdstate成员函数返回一个iostate类型的值,该值对于于流当前的整个条件状态

istream::iostate old_state = cin.rdstate();

2.多种状态的处理

 

is.setstate(ifstream::badbit | ifstream::failbit);

三、输出缓冲区的管理

1.输出缓冲区的刷新

cout << “hi” << flush;  //flushes the buffer;add no data
cout << “hi” << ends;  //inserts a null,then flushes the buffer
cout << “hi” << endl;  //inserts a newline,then flushes the buffer

2.unitbuf操作符

如果需要刷新所有输出,最好使用unitbuf操作符。

 

cout << unitbuf << “first” << “second” << nonunitbuf; 

3.将输入和输出绑定一起

任何读输入流的尝试都将首先刷新其输出流关联的缓冲区

 

四、文件的输入和输出 

fstream头文件定义了三种支持文件IO的类型:

ifstream,istream派生而来,提供读文件的功能

ostream,ostream派生而来,提供写文件的功能

fstream,iostream派生而来,提供读写同一个文件的功能

 

fstream还定义了两个自己的新操作—openclose

 

1.文件流对象的使用

 

//假设ifile和ofile是存储希望读写的string对象
ifstream infile(ifile.c_str());
ofstream outfile(ofile.c_str());
//捆绑要读写的文件对象
ifile.open(“in”);
otfile.open(“out”); 

IO标准库是使用C风格字符串的 

1)检查文件打开是否成功

if (infile)这种方式来检查

2)将文件流与新文件重新捆绑

 

ifstream infile(“in”);
infile.close();
infile.open(“next”);

3)清除文件流的状态

如果需要重用文件流读写多个文件,必须在读另外一个文件之前调用clear清楚流的状态

 

2.文件模式

所有文件都可以使用atebinary模式打开。

ofstream对象指向out模式等效于同时指定了outtrunc模式。

1)对同一个文件作输入和输出运算

同时打开输入和输出模式:

 

fstream inOut (“copyOut”, fstream::in | fstream::out);

 

2)模式是文件的属性而不是流的属性

只要调用open函数,就要设置文件模式,其模式的设置可以是显示的也可以是隐式的

3)打开模式的有效组合

所有组合可以添加ate模式。 


3.一个打开并检查输入文件的程序

 

Ifstream open_file(ifstream &in, const string &file)
{
              in.close();
              in.clear();
              in.open(file.c_str());
              return in;
} 

 

五、字符串流 

1.stringstream对象的使用

 

string line,word;
while (getline(cin,line)){
              istringstream stream(line);
              while(stream >> word){
      //TO DO
}
}

2.stringstream提供的转换和/或格式化

常见用法是,需要在多种数据类型之间实现自动格式化使用该类类型

 

 

 

 

 

 

 

  • 大小: 108.5 KB
  • 大小: 42.5 KB
  • 大小: 10.3 KB
  • 大小: 9.5 KB
0
4
分享到:
评论

相关推荐

    XMind总结C++标准IO库

    C++标准IO库,通过C++标准输入输出流对控制窗口,磁盘文件字符串流进行控制。内容也包含条件状态,文件模式等内容。

    C++标准IO文档

    C++标准IO 2 1.面向对象的标准库 2 2.流的状态 4 1.流状态 4 2.流状态的使用 4 3.缓存的管理 5 1.刷新输出缓冲区 5 2.输入和输出绑定 6 4.文件IO 6 1.类与对象 6 2.函数调用 7 1.文件模式 7 2.open函数 8 3.close...

    C++程序设计与数据结构基础:第8章 C++ IO流标准库.ppt

    C++程序设计与数据结构基础:第8章 C++ IO流标准库.ppt

    C标准库源代码(学习C/C++必备)

    C标准库源代码\IO.H C标准库源代码\IOINIT.C C标准库源代码\IOMANIP C 标准库源代码\IOMANIP.CPP C标准库源代码\IOMANIP.H C标准库源代码\IOS C标准库源代码\IOS.CPP C标准库源代码\IOS.H C标准库源代码\IOSFWD C...

    c和c++语言参考(标准c库及c++模板等)

    标准c库,c++模板,c++ IO,c++ string,全部c函数,和全部c++函数

    LINUX环境高级编程 第三章 标准IO

    静态库的编写 动态库的编写 接口的注意事项

    C++json解析库

    包里面有测试代码,包含了文件流和标准IO流的输入与输出。 不足: 没有实现‘\uXXXX’的解析与转义 输出是不换行的,如果需要请行写一个格式化输出 效率没有测试过,但我觉得它应该是易用的。

    C++精华资料全集——云盘链接

    LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO。 LibU : C语言写的多平台工具库。 Loki :C++库的设计,包括常见的设计模式和习语的实现。 MiLi :只含头文件的小型C++库。 openFrameworks...

    C++primer 课后题答案

    第八章 标准IO库 37 第九章 顺序容器 43 第十章 关联容器 60 第十一章 泛型算法 75 第十二章 类和数据抽象 86 第十三章 复制控制 94 第十四章 重载操作符与转换 102 第十五章 面向对象编程 116 第十六章 部分选做...

    非常经典的c++ primer视频教程6-10

    第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.4.1 文件流对象的使用 8.4.2 文件模式 8.4.3 一个打开并检查输入文件的程序 8.5 字符串流

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    sk-async:适用于C ++的基于Coro的无异常异步IO库

    sk-async (WIP)基于Coro的无异常异步I / O库。仅适用于Windows。要求: MSVC 19.28(VS 16.9)或更高版本。不支持Clang,因为clang-cl不支持标准协程(尚未)。例子:

    纯C++方式生成复杂格式的excel文件(linux下可运行)

    不使用任何非C++标准库,支持字体大小、颜色,单元格合并、背景色、边框等设置。 generate_excel.vcproj为在vs2005下的工程文件,如果需要在vc6或Linux等其他编译环境下使用只需新建工程将.h文件和.cpp文件导入即可...

    C++ Primer第四版【中文高清扫描版】.pdf

    第8章 标准IO库 243 8.1 面向对象的标准库 244 8.2 条件状态 247 8.3 输出缓冲区的管理 249 8.4 文件的输入和输出 251 8.4.1 文件流对象的使用 251 8.4.2 文件模式 254 8.4.3 一个打开并检查输入文件的 程序 256 ...

    C++Primer中文版(第4版).part4

     第8章 标准IO库  8.1 面向对象的标准库  8.2 条件状态  8.3 输出缓冲区的管理  8.4 文件的输入和输出  8.5 字符串流  小结  术语  第二部分 容器和算法  第9章 顺序容器  第10章 关联容器 ...

    C++ primer 第4版 原书+习题解答+源码 清晰pdf

     第8章 标准IO库  8.1 面向对象的标准库  8.2 条件状态  8.3 输出缓冲区的管理  8.4 文件的输入和输出  8.5 字符串流  小结  术语  第二部分 容器和算法  第9章 顺序容器  第10章 关联容器 ...

    一个基于C++11的高性能运营级流媒体服务框架

    使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。 支持画面秒开、极...

    C/C++标准库函数

    C/C++ 语言库函数参考手册,方便查找与使用。

    Linux/C/C++函数中文使用手册

    C/C++预处理命令、关键字、标准模板库、文件IO操作等函数中文使用说明;Linux下各文件操作、内存处理、信号、进程操作等函数中文帮助使用说明

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

    Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++...

Global site tag (gtag.js) - Google Analytics