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;
}