9.1 屏幕输出

第九章 C++语言的I/O流库

C++语言的输入输出操作虽然没有直接定义,但通过I/O流库提供了强大的支持。在C++程序中,数据可以从键盘输入到程序中,也可以从程序输出到屏幕或磁盘文件中。流在C++中是一个数据从一个位置流向另一个位置的抽象。流的操作包括提取操作和插入操作,分别用于从流中获取数据和向流中添加数据。

9.1 屏幕输出

屏幕输出是C++程序中最常见的操作之一,下面介绍几种常用的屏幕输出方法。

9.1.1 使用预定义的插入符

最常用的屏幕输出方法是将插入符作用在标准输出流类对象 cout 上。

示例:使用预定义的插入符进行屏幕输出
#include <iostream>
#include <cstring>
using namespace std;

int main() {
    cout << "The length of \"this is a string\" is:\t" << strlen("this is a string") << endl;
    cout << "The size of \"this is a string\" is:\t" << sizeof("this is a string") << endl;
    return 0;
}

输出结果

The length of "this is a string" is: 16
The size of "this is a string" is: 17

这个例子展示了如何使用插入符将字符串的长度和大小输出到屏幕。

9.1.2 使用成员函数 put() 输出一个字符

成员函数 put() 提供了一种将字符送进输出流的方法。

示例:使用 put() 输出字符
#include <iostream>
using namespace std;

int main() {
    cout << 'a' << ',' << 'b' << '\n';
    cout.put('a').put(',').put('b').put('\n');
    char c1 = 'A', c2 = 'B';
    cout.put(c1).put(c2).put('\n');
    return 0;
}

输出结果

a,b
a,b
AB

这个例子展示了使用插入符和 put() 函数输出字符的方法。

9.1.3 使用成员函数 write() 输出一个字符串

成员函数 write() 提供了一种将字符串送到输出流的方法。

示例:使用 write() 输出字符串
#include <iostream>
#include <cstring>
using namespace std;

void PrintString(char *s) {
    cout.write(s, strlen(s)).put('\n');
    cout.write(s, 6) << "\n";
}

int main() {
    char str[] = "I love C++";
    cout << "The string is: " << str << endl;
    PrintString(str);
    PrintString("this is a string");
    return 0;
}

输出结果

The string is: I love C++
I love C++
I love
this i
this i

这个例子展示了 write() 函数可以输出整个字符串或部分字符串的功能。

继承结构和流类

C++语言提供了一个继承结构来描述流的行为,见图9-1。ios 类提供了一些关于对流状态进行设置的功能,它是一个虚基类。istream 类提供了从流中提取数据的操作,ostream 类提供了向流中插入数据的操作,iostream 类综合了 istreamostream 类的行为。

文件操作的流类

为了实现对文件的操作,C++语言I/O流库派生定义了5个类:

  1. fstreambase:公共基类,文件操作中不直接使用。
  2. ifstream:从 istream 派生,用于文件的提取操作。
  3. ofstream:从 ostream 派生,用于文件的插入操作。
  4. fstream:从 fstreambaseiostream 派生,既可以进行文件的提取也可以进行插入操作。
  5. filebuf:从 streambuf 派生,用于缓冲支持。

内部初始化字符序列的类

I/O流库还提供了处理内部初始化字符序列的两个类:

  • istrstream:从 istream 派生,用于从字符序列中取字符。
  • ostrstream:从 ostream 派生,用于将字符放入字符序列中。

预定义流对象

系统预定义了四个流对象供用户使用:

  1. cinistream 类对象,用于标准输入(键盘输入)。
  2. coutostream 类对象,用于标准输出(屏幕输出)。
  3. cerrostream 类对象,用于标准出错信息输出(无缓冲区)。
  4. clogostream 类对象,用于标准出错信息输出(带缓冲区)。

2024/6/29日补充

在编译原理课程设计的时候写文件读写模块忘了C++文件读写的各个库函数和类和函数,暴露了本人这个模块的不足。 


结论

C++ I/O流库提供了灵活且强大的输入输出功能,通过流的抽象,使得数据的输入输出操作变得简洁高效。无论是对屏幕、键盘的操作,还是对文件的操作,C++ I/O流库都能很好地满足需求。希望本文对C++ I/O流库的理解有所帮助,为编写高效的C++程序提供支持。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值