C++输入输出流(2)

标准流与流操作

标准流是C++预定义的对象,提供内存与外部设备进行数据交互的功能。流的操作是流类的公有成员函数。
标准流为用户常用的外部设备提供与内存之间的通信通道,对数据进行解释和传输,提供必要的数据缓冲。
(1)标准流
cin: istream类的对象,通常连向键盘,可以重定向。
cout:ostream类的对象,通常连向显示器,可以重定向。
cerr:ostream类的对象,连向显示器,不能重定向。
clog:ostream类的对象,连向打印机,不能重定向。
(2)
istream类的共有成员函数
在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
    char c;
    cout<<"Enter first sentence followed by Enter\n";
    while ((c=cin.get())!='\n') cout.put(c);
    cout<<endl;
    cout<<"Enter sceond sentence followed by Enter\n";
    while (cin.get(c)){
        if(c=='\n') break;cout.put(c);}
    cout<<endl;
    cout<<"Enter third sentence followed by Enter\n";
    char s[80];
    cin.get(s,10);
    cout<<s<<endl;
    return 0;
}
//cin.get(char,n)末尾需要'\n',所以字符数为n-1。

ostream类的公有成员函数
在这里插入图片描述

#include <iostream>
using namespace std;
int main()
{
    cout<<"Enter a sentence followed by Enter\n";
    char s[20];
    cin.getline(s,26);
    cout.write(s,26);
    cout<<endl;
    return 0;
}

流错误状态

ios处理流错误状态的公有成员函数
在这里插入图片描述
ios提供1直接设置标志字的控制格式函数
iostream和iomanip库还提供了一批控制符简化I/O格式化

各种计算机应用系统通常把一些相关信息组织起来保存在外存储器中,称为文件,并用一个名字(称为文件名),加以标识。
C++把文件看成无结构的字节流:
编码方式:文本文件 二进制文件
存取文件:顺序文件 随机文件
ifstream、ofstream和fstream类用于内存和文件之间的数据传输

打开和关闭文件

1、打开文件包括建立文件流对象;与外部文件关联;指定文件的打开方式
方法一:先建立流对象,再调用fstream::open()函数连接外部文件
流类 对象名
对象名.open(文件名,方式);
方法二:调用流带参数的构造函数,建立流对象的同时连接外部文件
流类 对象名(文件名,方式)
open函数原型
void open(const *char,int mode)
filebuf、ifstream、ofstream、fstream的构造函数具有相同的参数和缺省值
文件流的构造函数和open()函数用于打开文件,析构函数在流对象被删除之前关闭的文件
在这里插入图片描述如果打开失败,则流对象的值为0
也可以通过调用成员函数is_open()来检查一个文件是否已经被顺利打开 bool is_open();
返回一个bool值
2、关闭文件的操作包括把缓冲区的数据完整的写入文件,添加文件结束标志,切断流对象和外部文件的连接,若流对象的生存期没有结束,可以重用,当一个流对象的生存期结束,系统也会自动关闭文件。

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ofstream ost("d:'\'my1.txt");
    if(!ost){
        cout<<"can not open file.";return 1;}
    ost<<20<<endl;
    ost<<30.5<<endl;
    ost.close();
    ifstream ist("d:'\'my1.txt");
    if(!ist.is_open()){
        cout<<" can not open file.";return 1;}
    int n;double d;
    ist>>n>>d;
    cout<<n<<endl<<d<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值