温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

再学C++ Primer(8)-标准IO库

发布时间:2020-06-03 00:30:54 来源:网络 阅读:427 作者:拳四郎 栏目:移动开发

没看懂,以后上。

2012-3-26


C++的输入输出由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写。
主要有下面几个类型:
iostream
istream从流中读取
ostream:写到流中去
iostream:对流进行读写;从istream和ostream派生而来

fstream
ifstream:从文件中读取;由istream派生
ofstream:写到文件中去;由ostream派生
fstream:读写文件;由isstream派生

sstream
istringstream:从string队形中读取,由istream派生
ostringstream:写到string中去;由ostream派生
stringstream:对string对象进行读写;由iostream派生

流状态查询和管理
IO标准库管理了一系列的条件状态成员,用来标记给定的IO对象是否处于可用范围,或者碰到了哪种特定的错误。
可以用下列函数判定文件流状态:
is_open():判定流对象是否与一个打开的文件相联系,若是,返回trun,否则返回false;
good():刚进行的操作成功时返回true,否则返回false;
fail():与good()相反,刚进行的操作失败时返回true,否则返回false;
bad():如果进行了非法操作返回true,否则返回false;
eof():进行输入操作时,若到达文件尾返回true,否则返回false;


如下面的语句,就可以在保证输入正确的情况下执行循环体。

    int ival;     while(cin>>ival)     {         //do something         cout<<ival<<endl;     }

文件流
首先看一个最简单的例子.


#include <iostream> #include <fstream> using namespace std;  int main() {     string name;     cin>>name;     //打开一个输出流     ofstream SaveFile("test.txt");     //向流中输出内容     SaveFile << "Hello,"<<name;    //关闭流     SaveFile.close(); }

编译运行,在可执行程序当前目录下会出现一个text.txt,里面的内容就是“Hello,XXX(你输入的内容)”。

再来实现文件的读取,并在文件的最后添加内容.

#include <iostream> #include <fstream> using namespace std;  int main() {      int i;      //输出内容     /*     fstream File("test.txt",ios::in | ios::out);     while(!File.eof())     {       //空格作为单词的分隔符进行读取       File>>i;       cout << i << endl;     }*/     //输入内容     fstream File("test.txt",ios::out|ios::app);     cout<<"Add number"<<endl;      //File.seekg(ios::beg);     while(cin>>i)     {         File<<i;         File<<" ";     }      File.close(); } 

各种打开模式
ios::app 使所有输出到相应文件的内容都添加到文件末尾,该值只能用于具有输出功能的文件。

ios::ate  使得在打开文件时能够定位到文件末尾

ios::binary  可以以二进制文件打开,默认情况下,所有文件都以文本方式打开。

ios::in  指定为输入

ios::out 制定我输出

ios::trunc 销毁具有相同名字的先前文件的内容,并且将文件长度截断为0,当使用ofstream创建一个输出流时任何先前存在的具有该文件名的文件将被自动截断

组合模式:
out|app 打开文件写操作,在文件尾写入

in|out 打开文件做读写操作,并定位于文件开头处

in|out|trunc 打开文件做读写操作,删除文件中已有的数据


字符串流

iostream标准库支持内存中的输入\输出,只要将流与存储在程序内存中的string对象捆绑起来即可。

书上的例子:

#include<sstream> using namespace std;  int main() { int val1 = 512, val2 = 1024; ostringstream oss_message; oss_message << "val1:" << val1 << "\n" << "val2: " << val2 << "\n"; cout << oss_message.str() << endl; } 

再学C++ Primer(8)-标准IO库


例子的重点在于int型值自动转换为等价的可打印的字符串。

2012-11-9

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI