【C++】输入输出流 ⑦ ( cout 标准输出流对象 | cout.write 函数 | cout.width / cout.fill / cout.setf 函数 )






一、cout.write 函数




1、cout.write 函数简介


cout.write(const char* s, int n) 成员函数 : 该函数将一个 字符数组 的 前 n 个字符 , 写入流中 ; 如 : cout.write("Hello, world!", 6) 将在控制台输出 “Hello,” ;


函数原型如下 : ptr 参数 是指向 要写入的 字符数组 的指针 , num 参数是要写入的字符数 ;

ostream& write (const char* ptr, int num);

特别注意 :

cout.write() 函数 不会添加任何 EOF 终止字符 , 其作用仅仅是把内存中的内容原封不动地写入到输出流中 ;

当使用 cout.write() 函数时 , 必须确保写入的字符数量不超过数组的大小 , 以防止越界错误 ;

cout.write() 函数通常用于低级 I/O 操作 , 如 : 当需要直接处理字节流时 ; 在 高级文本处理中 , 使用流插入运算符 << 通常更为方便和安全 ;


2、代码示例 - cout.write 函数


执行 cout.write("TomAndJerry", 7); 代码 , 会输出 “TomAndJerry” 字符串的 前 7 个字符 , 命令行输出结果为 “TomAndJ” ;


代码示例 :

#include "iostream"
using namespace std;

int main() {
    
    

	// 输出 "Tom" 字符串
	cout << "Tom" << endl;

	// 输出字符串
	cout.write("TomAndJerry", 7);

	// 输出回车换行
	cout << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

Tom
TomAndJ
请按任意键继续. . .

在这里插入图片描述





二、cout.width / cout.fill / cout.setf 函数




1、函数简介


cout.width / cout.fill / cout.setf 函数简介 :

  • width(int n) 成员函数 : 该函数设置下一个输出或输入操作的宽度 ; 它通常与其它格式函数一起使用 , 如 setw ; 如 : cout << setw(5) << 123 将在控制台输出 “123” , 前面的空格使得总宽度为5 ;
  • fill(char c) 成员函数 : 该函数设置用于 填充额外空间 的字符 ; 如 : cout << setfill('*') << setw(5) << 123 将在控制台输出 “123” , 因为 * 被用作填充字符 ;
  • setf(fmtflags f, fmtflags val) 成员函数 : 该函数设置格式标志 f , 可以选择性地设置第二个参数 val ; 如 : cout.setf(ios::showbase) 开启显示数值的基数 ;

2、代码示例


输出字符串长度为 8 字节 , 如果输出的字符不够 8 个 , 使用 * 填充 , 设置显示基准数据 , 如果是 十六进制 显示 0x 格式样式 ,

设置 * 填充效果 , 填充到 0x 和 数字之间 ,

命令行输出 123 , 使用 十六进制显示 ;

123 对应的十六进制为 0x7b ,


代码示例 :

#include "iostream"
using namespace std;

int main() {
    
    

	// 输出字符串长度为 8 字节
	cout.width(8);

	// 如果输出的字符不够 8 个 , 使用 * 填充
	cout.fill('*');

	// 设置显示基准数据 , 如果是 十六进制 显示 0x 格式样式
	cout.setf(ios::showbase);

	// 设置 * 填充效果 , 填充到 0x 和 数字之间
	cout.setf(ios::internal);

	// 命令行输出 123 , 十六进制显示
	cout << hex << 123 << endl;

	
	// 控制台暂停 , 按任意键继续向后执行
	system("pause");

	return 0;
};

执行结果 :

0x****7b
请按任意键继续. . .

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/134911909