C++

    xiaoxiao2021-12-03  24

     标准库的IO类型主要有:iostream(定义了用于读写流的基本类型),fstream(定义了读写命名文件的类型),sstream(定义了读写内存string对象的类型),并且为了支持宽字符的语言,标准库还定义了一组类型和对象来操纵wchar_t类型的数据。 注意: ①IO对象无拷贝或者赋值 ②进行IO操作的函数常常以引用方式传递和返回流

    ③读写IO对象会改变其自身的状态,传递和返回的引用不能用const

    第一部分:条件状态 strm::iostat:(strm是一种IO类型)是一种机器相关的类型提供了条件状态的完整性 strm::badbit:用来指出流已经崩溃 strm::failbit用来指出一个IO操作失败了 strm::eofbit用来指出流到达了文件结束 strm::goodbit用来指出流未出错 s.eof():若流eofbit置位,则返回true,s.fail(),s.good(),s.bad()同理 s.clear():将流的所有状态位复位 s.clear(flags):根据给定的标志为将流s中对应条件状态位复位flag位iostate,同s.setstate(flags) s.rdstate():返回流s的当前状态 第二部分:管理输出缓冲 1、刷新输出缓冲区    每一个输出流都管理着一个缓冲区,用来保存程序读写的数据。    刷新缓冲区主要有四种方式:    ①endl:完成换行并刷新缓冲区    ②flush:刷新缓冲区但不添加任何额外字符    ③ends:向缓冲区插入一个空白字符,然后刷新缓冲区    ④unitbuf:告诉流在接下来的每次操作之后都有一次flush操作(nounitbuf) // 以引用方式传递和返回流 //读写IO对象会改变其自身的状态,传递和返回的引用不能用const ostream& operator<<(ostream& out, const Test& src) { for (size_t i = 0;i < strlen(src._ptr);++i) { out< < 2、关联输入输出流    标准库cin和cout关键在一起,任何试图从输入流读数据的操作都会先刷新输出流。    关联函数:s.tie()和s.tie(&flags) 第二部分:文件输入输出

       文件操作特有的操作主要有:fstrm.open(s)、fstrm.close()、fstrm.is_open();并且fstream对象会自动构造和析构。

    使用代码如下: 

       ifstream in(file1);    ofstream out(file2);//隐含的设置为输出和截断    if (out)    {        cerr<< "could not open"<<endl;    } 第三部分:string流     istringstream从string中读取数据,ostringstream向string写入数据,而头文件stringstream既可以从string读数据也可以向string中写数据。 使用istringstream: string line; string word; //保存来自输入的所有数据 vector people; //逐行从输入读取数据,直到cin遇到文件尾 while (getline(cin, line)) { //创建一个此记录数据的对象 Person info; //将此记录绑定到刚读入的行 istringstream record(line); record >> info.name; while (record >> word) { info.phones.push_back(word); } //将此记录追加到people的末尾 people.push_back(info); }

    使用ostringstream:

    ostringstream oss(ios_base::ate); oss.str("abc"); oss << "def"; cout << oss.str() << endl;

    转载请注明原文地址: https://ju.6miu.com/read-680075.html

    最新回复(0)