C++IO流 艰难抉择 10

C++IO流

流: 若干字节数据从一端到另一端我们叫做流

流类体系

  • 流对象
  • 流运算符:
  •                        <<:向左流入
    
  •                        >>: 向右流出
    

输出输出流

  • ostream类
    << 重定向:输入输出定向为文件
    • cout :标准输出 可以重定向
    • cerr :标准错误输出 不能重定向
    • clog :标准错误输出 重定向为文件
    • cin : 标准输入
#include"iostream"
#include"cstdio"
using namespace std;
void testiostream()
{
	cout << "标准输出" << endl; //重定向
	cerr << "标准错误输出" << endl; //不能重定向
	clog << "标准错误输出" << endl;重定向为文件

}
void freopeniostream()
{
	freopen("1.txt", "r", stdin);// 把基本输入定向为输入文件
	int a, b;
	scanf("%d%d", &a, &b);
	printf("%d", a + b);
}
int main()
{
	// testiostream
	testiostream();
	freopeniostream();

	return 0;
}

在这里插入图片描述

  • 字符类的处理

    • 正常的操作
    • 调用成员函数的方式
      在这里插入图片描述
      str 需要字符串结束标记
      str[20]="";
  • 格式控制字符

    • 包含头文件 iomanip
    • 常用的格式控制,一种是调用成员函数方式,一种流控制字符去做
      • 设置有效位数: setprecision(n)
      • 设置精度: fixed结合setprecision使用
  • istream 类 cin在这里插入图片描述

#include"iostream"
#include"cstdio"
#include <iomanip>
using namespace std;
void testiostream()
{
	cout << "标准输出" << endl; //重定向
	cerr << "标准错误输出" << endl; //不能重定向
	clog << "标准错误输出" << endl;重定向为文件
	// 字符类的处理
	char c = 'c';
	cout.put(c);
	cout.put('\n');
	//  字符串输出
	cout.write("I love you", 5);//   可以指定长度输出  截取输出
	cout.put('\n');
	// 输入
	//c=cin.get();  // 返回值为输入的值
	cout.put(cin.get());
	//cout.put(c);
	cout.put('\n');
	// 字符串输入
	//while (getchar() != '\n');// 清空缓冲区
	while (cin.get() != '\n');
	char str[20] = "";  // 需要结束标记  不然会 烫烫烫
	//string st;     不能对字符串类 操作
	cin.getline(str, 20);// 无返回值
	cout.write(str,20);   // 更为安全
	cout.put('\n');

}
void testiomanip()
{
	// 格式控制字符
	//头文件 #include <iomanip>
	double pi = 3.1412345;
	cout << "设置有效位数:" << setprecision(4)<<pi << endl;
	cout << "设置有效小数位数:" <<fixed<< setprecision(2) << pi << endl;
	//进制  转换输出
	cout << "hex  16   32\t" << hex << 32 << endl;
	cout << "oct   8   13\t" << oct << 13 << endl;
	cout << "setbase(16)  16  15 \t" << setbase(16)<<15<<endl;
	cout << "setbae (2)  3  22 不行 为啥?\t" << setbase(2) << 22<< endl;
	// 对齐方式和 输出宽度
	cout << setw(6) << 123 << setw(6) << 3456 << setw(6) << 56 << endl;
	// 默认 右对齐 
	// 自己设设置 
	cout << setiosflags(ios::left) << endl;
	cout << setw(6) << 123 << setw(6) << 3456 << setw(6) << 56 << endl;

}
void freopeniostream()
{
	freopen("1.txt", "r", stdin);// 把基本输入定向为输入文件
	int a, b;
	scanf("%d%d", &a, &b);
	printf("%d", a + b);
}
int main()
{
	//freopeniostream();
	testiostream();
	testiomanip();

	return 0;
}

在这里插入图片描述

字符流

  • 用的头文件是:sstream类

    • istringstream类
    • ostringstream类
    • 一般用时stringstream类对象即可
  • 获取字符流对象中的数据

    • string str() //获取string
    • void str(const string& str); 重新设置字符流对象的数据
  • 一般字符流对象做字符串处理

    • 字符串分割
    • 字符串转换问题
      // 再补
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值