C/C++中I/O进阶怎么用

发布时间:2021-09-03 09:30:19 作者:小新
来源:亿速云 阅读:123

这篇文章将为大家详细讲解有关C/C++中I/O进阶怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

概述

C++ 的输入 (input stream) 和输出 (output stream)是由若干字节组成的字节序列, 使得数据按顺序从一个对象传送到另一对象. 流 (stream) 表示量信息从源到目的端的流动.

C/C++中I/O进阶怎么用

C++ 的输入输出包括:

标准 I/O: 对系统指定的标准设备的输入

文件 I/O: 对磁盘文件的输入和输出

串 I/O: 对内存中指定的空间进行的输入和输出

I/O 类库

I/O stream 类库:

C/C++中I/O进阶怎么用

头文件是程序与类库的接口, iostream 类库的接口分别由不同的文件来实现.

常用的头文件:

iostream: 包含对 I/O 进行操作的基本信息

fstream: 用于用户管理的文件的 I/O 操作

strstream: 用于字符串流的 I/O 操作

stdiostream: 用于混合使用 C 和 C++ 的 I/O 机制

iomanip: 使用格式化 I/O 时的操作

I/O 中的重载

在之前的文章中我们使用<<>>来实现控制台的输出和输入.

C/C++中I/O进阶怎么用

<<>>被重载来用于标准类型数据的输出和输入:

在 input stream 和 output stream 类中对位移运算符<<>>进行重载的成员函数, 包括:

注: 想将<<>>用于自己声明的类型数据必须对<<>>进行重载.

流对象

I/O stream 头文件还定义了 4 种流对象:

例如:

C/C++中I/O进阶怎么用

当我们从键盘输入 “World”, cin 会把字符串存入内存, 当我们调用 cout, 内存中的 “World” 就被输出到控制台上.

标准输入流

标准输出流, 是流向标准输出设备的数据. ostream 类定义了 3 个输出流对象: cout, cerr, clog.

cin 流对象

cin 是 istream 类的对象, 从标准输入设备获取数据. 程序中的变量通过流提取符>>从 cin 流中提取数据:

流提取符>>从流中提取数据时, 通常跳过流中的空格, tab 键, 换行符等空白字符

只有在输入完数据再按回车键后, 该行数据才被送入键盘缓冲区, 形成输入流. 提取运算符>>才能从中提取数据

程序将从键盘缓冲区中连续的获得数据

当遇到无效字符或文件结束符^Z时, cin 无法正常提取数据, 处于出错状态, 返回 0 值 (false)

C/C++中I/O进阶怎么用

案例

输入个数不确定的成绩:

#include <iostream>
#include <valarray>
using namespace std;

int main() {
    // 定义变量
    double grade;
    cout << "enter your grade:\n";
    while (cin >> grade){
        if(grade >= 85){
            cout << grade << " Good!" << endl;
        }
        if(grade < 60){
            cout << grade << " fail" << endl;
        }
        cout << "enter your grade:\n";
    }
    cout << "The end." << endl;

    return 0;
}

输出结果:

enter your grade:
90
90 Good!
enter your grade:
12
12 fail
enter your grade:
^Z
The end.

get 函数

不带参数的 get 函数:

cin.get()

有一个参数的 get 函数:

cin.get(c)

有 3 个参数的 get 函数:

cin.get(字符数组或指针, n, 终止字符)

getline 函数

getline 函数的作用是从输入流中读取一行字符. 例如:

istream &getline(char *buffer, streamsize num );
istream &getline(char *buffer, streamsize num, char delim );

getline 函数用于输入流, 读取字符到 buffer 中, 直到:

注: getline 函数遇到空白字符不结束.

eof 函数

eof (End Of File) 表示文件结束. 从输入流读取数据如果达到文件末尾或遇到文件结束符时, eof 函数的值为非零值 (true), 否则为 0 (false)

cout 流对象

cout 是 console input 的缩写, 意为在控制台的输出:

C/C++中I/O进阶怎么用

cerr 流对象

cerr 流对象是标准错误流, 被指定为与显示器关联. cerr 的作用是想标准组错误设备 (standard error device) 输出有关出错信息.

cerr 和 cout 的区别:

cerr 的用途:

C/C++中I/O进阶怎么用

案例 (解一元二次方程):

#include <iostream>
#include <valarray>
using namespace std;

int main() {
    double a, b, c, delta;
    cout << "please input a, b, c:\n";
    cin >> a >> b >> c;

    if (a==0){
        cerr << "a is equal to zero, error!" << endl;
    }else if((delta = b*b - 4*a*c) < 0){
        cerr << "delta < 0, error" << endl;
    }else{
        cout << "x1=" << (-b + sqrt(delta)) / (2*a) << endl;
        cout << "x1=" << (-b - sqrt(delta)) / (2*a) << endl;
    }
    
    return 0;
}

输出结果:

C/C++中I/O进阶怎么用

C/C++中I/O进阶怎么用

C/C++中I/O进阶怎么用

clog 流对象

colg 流对象也是标准错误流, 它是 console log 的缩写. clog 的作用和 cerr 相同, 都是在终端显示器上显示出错误信息.

clog 和 cerr 的区别:

关于“C/C++中I/O进阶怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. 剑指XX游戏(四) - 轻松搞定面试中的“虚”
  2. 如何使用Dev C++编写C语言程序

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

c++

上一篇:Hadoop之hdfs架构原理的示例分析

下一篇:MySQL中的隐藏列的具体查看方法

相关阅读

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

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