c++输入输出流

 

cout 全局输出流 输出数据到显示器

cin  不是从键盘读数据,而是从缓冲区读取数据

cerror标准错误 输出数据到显示器,没有缓冲区

clog标准日志,输出数据到显示器,有缓冲区

标准输入流

cin.get()一次只能读取一个字符,从缓冲区把数据拿走了 

cin.get(一个参数)

读一个字符 

cin.get(两个参数)

可以读字符串 
cin.getline()读取一行,不读换行 
cin.ignore()加一个参数n,忽略n个字符。加两个参数(n,'\n'),会忽略n个字符,当不满n个字符就碰到\n了,之后的就不忽略了。忽略是从缓冲区取走了 
cin.peek()看一看数据,没有把数据从缓冲区拿走 
cin.putback()

将cin.get()拿走的数据还回来

 
1

标准输出流

cout.flush()刷新缓冲区
cout.put()向缓冲区写字符
cout.write()二进制流的输出
cout.width()输出格式控制
cout.fill() 
cout.setf(标记) 
// 输入输出流1.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iomanip>
#include<iostream>
using namespace std;
void test01()//标准输入流
{
	/*char ch;
	while ((ch = cin.get()) != EOF)//ctrl+z 就是EOF
	{
		cout << ch << endl;
	}
	cout << "-------------------------------" << endl;
	*/
	char ch2;
	//cin.get(ch2);//读取一个字符
	char buf[256] = { 0 };
	cin.get(buf, 256);//从缓冲区读取一个字符串
	//cin.getline(buf, 256);//读取一行数据 不读换行
	cout << buf << endl;
	
}
//cin.ignore 忽略当前字符
void test02()
{
	char ch;
	cin.get(ch);//从缓冲区拿走数据,缓冲区没有这个数据了,如果没有数据会阻塞
	cout << ch << endl;
	cin.ignore(2);//加参数n,忽略n个字符
	cin.get(ch);
	cout << ch << endl;
}//从键盘输入数据,按回车,数据进入缓冲区,cin.get()从缓冲区拿数据
//输入asdf,先从缓冲区拿到的是a,忽略当前的字符s,再cn.get(ch)得到d
void test3()
{
	cout << "输入数据或字符串" << endl;
	char ch;
	ch=cin.peek();//不从缓冲拿走数据,只是看一看这个数据
	if (ch >= '0'&&ch <= '9')
	{
		int num;
		cin >> num;
		cout << "你输入的是数字" << num << endl;
	}
	else
	{
		char buf[256] = { 0 };
		cin >> buf;
		cout << "你输入的是字符串" << buf << endl;
	}
}
//cin.putback
//cin.get()从缓冲区拿走了数据,cin.putback将数据放回缓冲区
void test4()
{
	cout << "输入字符串或数字" << endl;
	char ch;
	cin.get(ch);
	if (ch >= '0'&&ch <= '9')
	{
		cin.putback(ch);
		int num;
		cin >> num;
		cout << "你输入的是数字" << num << endl;
	}
	else {
		cin.putback(ch);
		char buf[256] = { 0 };
		cin >> buf;
		cout << "你输入的是字符串" << buf << endl;
	}
}
//标准输出流
void test5()
{
	cout << "hello" << endl;;
	//cout.flush();
	cout.put('h').put('e').put('l').put('l').put('o') << endl;
	cout.write("hello", strlen("hello"));

}
//格式化输出
void test6()
{
	//成员方法的方式
	int num = 10;
	cout.unsetf(ios::dec);//卸载当前默认的十进制输出方式
	cout.setf(ios::oct);//八进制输出
	cout.setf(ios::showbase);
	cout << num << endl;
	cout.unsetf(ios::oct);
	cout.setf(ios::hex);//十六进制
	cout << num << endl;

	cout.width(10);
	cout.fill('*');//默认右对齐
	cout.setf(ios::left);
	cout << num << endl;
	//通过控制符

	int num2 = 10;
	cout << hex
		<< setiosflags(ios::showbase)//setiosflags  需要头文件<iomanip>
	    << setw(10)//设置宽度
		<< setfill('*') 
		<<setiosflags(ios::left)
		<< num2 << endl;

}
int main()
{
	test6();

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值