二、面向对象的标准库
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还定义了两个自己的新操作—open和close
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.文件模式
所有文件都可以使用ate或binary模式打开。
为ofstream对象指向out模式等效于同时指定了out和trunc模式。
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提供的转换和/或格式化
常见用法是,需要在多种数据类型之间实现自动格式化使用该类类型
相关推荐
C++标准IO库,通过C++标准输入输出流对控制窗口,磁盘文件字符串流进行控制。内容也包含条件状态,文件模式等内容。
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标准库源代码\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++ IO,c++ string,全部c函数,和全部c++函数
静态库的编写 动态库的编写 接口的注意事项
包里面有测试代码,包含了文件流和标准IO流的输入与输出。 不足: 没有实现‘\uXXXX’的解析与转义 输出是不换行的,如果需要请行写一个格式化输出 效率没有测试过,但我觉得它应该是易用的。
LibSourcey :用于实时的视频流和高性能网络应用程序的C++11 evented IO。 LibU : C语言写的多平台工具库。 Loki :C++库的设计,包括常见的设计模式和习语的实现。 MiLi :只含头文件的小型C++库。 openFrameworks...
第八章 标准IO库 37 第九章 顺序容器 43 第十章 关联容器 60 第十一章 泛型算法 75 第十二章 类和数据抽象 86 第十三章 复制控制 94 第十四章 重载操作符与转换 102 第十五章 面向对象编程 116 第十六章 部分选做...
第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.4.1 文件流对象的使用 8.4.2 文件模式 8.4.3 一个打开并检查输入文件的程序 8.5 字符串流
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
sk-async (WIP)基于Coro的无异常异步I / O库。仅适用于Windows。要求: MSVC 19.28(VS 16.9)或更高版本。不支持Clang,因为clang-cl不支持标准协程(尚未)。例子:
不使用任何非C++标准库,支持字体大小、颜色,单元格合并、背景色、边框等设置。 generate_excel.vcproj为在vs2005下的工程文件,如果需要在vc6或Linux等其他编译环境下使用只需新建工程将.h文件和.cpp文件导入即可...
第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 ...
第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.5 字符串流 小结 术语 第二部分 容器和算法 第9章 顺序容器 第10章 关联容器 ...
第8章 标准IO库 8.1 面向对象的标准库 8.2 条件状态 8.3 输出缓冲区的管理 8.4 文件的输入和输出 8.5 字符串流 小结 术语 第二部分 容器和算法 第9章 顺序容器 第10章 关联容器 ...
使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。 支持画面秒开、极...
C/C++ 语言库函数参考手册,方便查找与使用。
C/C++预处理命令、关键字、标准模板库、文件IO操作等函数中文使用说明;Linux下各文件操作、内存处理、信号、进程操作等函数中文帮助使用说明
Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++...