文章目录

  • 1.标准输出流
  • 1.1 cout、cerr、clog流
  • cout
  • cerr
  • clog
  • 1.2 输出格式控制
  • 1.2.1控制符控制输出格式
  • 1.2.2成员函数控制输出格式
  • 1.3 put函数
  • 2.标准输入流
  • 2.1 cin流
  • 2.2 get函数
  • 2.3其他常用函数
  • 3.文本文件的操作
  • 3.1文件写入
  • 3.2文件输出


1.标准输出流

1.1 cout、cerr、clog流

cout

cout是console output的缩写,意为在控制台的输出

cout<<"Hello World!!"<<endl;

输出:

流式接口 只输出最终结果 python_ci

图解cout输出原理:

流式接口 只输出最终结果 python_输出格式_02

cerr

cerr是console error的缩写,意为“在控制台显示出错信息”
用法与cout类似

cerr<<"Wrong input!!"<<endl;

输出:

流式接口 只输出最终结果 python_ios_03

clog

clog是console log的缩写
clog与cerr作用相同,都是在终端显示器上显示出错信息,
区别是:cerr输出的信息不经过缓冲区,clog输出的信息存放在缓冲区中,缓冲区满或遇到endl时向显示器输出

clog<<"这是一个clog输出的错误信息!"<<endl;

流式接口 只输出最终结果 python_ci_04

1.2 输出格式控制

1.2.1控制符控制输出格式
  • 头文件:#include < iomanip >
  • 格式:cout<<格式控制符<<数据

控制符表:

流式接口 只输出最终结果 python_输出格式_05

设置输出进制

cout<<hex<<"16进制:"<<20<<endl;
	cout<<dec<<"10进制:"<<20<<endl;
	cout<<oct<<"8进制:"<<20<<endl;

流式接口 只输出最终结果 python_c++_06

cout<<setbase(16)<<"16进制:"<<20<<endl;
	cout<<setbase(8)<<"8进制:"<<20<<endl;
	cout<<setbase(10)<<"10进制:"<<20<<endl;

流式接口 只输出最终结果 python_输出格式_07

设置输出字符个数和填充字符

cout<<setfill('*')<<setw(10)<<"hello!"<<endl;

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_08

设置数字一共多少位

cout<<setprecision(3)<<3.1415<<endl;
	cout<<setprecision(2)<<10000.3<<endl;

流式接口 只输出最终结果 python_ios_09

设置输出数字对齐方式

cout<<setw(15)<<setprecision(3)<<setiosflags(ios::scientific);
cout<<setiosflags(ios::right)<<3.14159<<endl;
cout<<setiosflags(ios::left)<<3.14159<<endl;

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_10

cout<<setiosflags(ios::uppercase)<<setiosflags(ios::scientific)<<3.1415926<<endl;

流式接口 只输出最终结果 python_输出格式_11

1.2.2成员函数控制输出格式

流式接口 只输出最终结果 python_ios_12

流式接口 只输出最终结果 python_c++_13

int a=21;
	cout.setf(ios::showbase);
	cout<<"dec:"<<a<<endl;	//dec:21
	cout.unsetf(ios::dec);
	
	cout.setf(ios::hex);
	cout<<"hex:"<<a<<endl;	//hex:0x15
	cout.unsetf(ios::hex);
	
	cout.setf(ios::oct);
	cout<<"oct:"<<a<<endl;	//oct:025
	
	char *pt="China";
	cout.width(10);
	cout<<pt<<endl;		//     China
	
	cout.width(10);
	cout.fill('*');
	cout<<pt<<endl;		//*****China
	
	double pi=22.0/7.0;
	cout.setf(ios::scientific);
	cout<<"pi=";		
	cout.width(14);
	cout<<pi<<endl;		//pi=*3.142857e+000
	
	cout.unsetf(ios::scientific);
	cout.setf(ios::fixed);
	cout.width(12);
	cout.setf(ios::showpos);
	cout.setf(ios::internal);
	cout.precision(6);
	cout<<pi<<endl;		//+***3.142857

1.3 put函数

ostream类中有一个put函数,参数可以是单个字符或者ASCII码

cout.put(97);	//ASCII码97就是字符a
	cout.put('\n');
	cout.put('a');

输出:

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_14

2.标准输入流

2.1 cin流

  • 如果输入流在正常状态,cin的返回值为true(真),即cin为一个非0值
int a;
	
	if(!(cin>>a)){
		cerr<<"error!";
	}else{
		cout<<"finish!";
	}

流式接口 只输出最终结果 python_ci_15

2.2 get函数

流成员函数get有3种形式:无参数、有一个参数、有三个参数

cin.get()

将输入的句子,放在字符串缓冲区,用c一个一个读取,然后一个一个输出

int c;
	cout<<"输入一个句子:"<<endl;
	while((c = cin.get())!=EOF){
		cout.put(c);
	}

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_16


cin.get(ch)

char c;
	cin.get(c);	//读取一个字符放入c中
	cout.put(c);

流式接口 只输出最终结果 python_c++_17

cin.get(字符串,字符个数,终止字符)

char ch[20];
	cin.get(ch,10,'\n');
	cout<<ch<<endl;

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_18


流式接口 只输出最终结果 python_输出格式_19

2.3其他常用函数

getline函数

char ch[20];
	cin.getline(ch,10,'\n');
	cout<<ch<<endl;

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_20

3.文本文件的操作

  • 头文件: #include < fstream >

3.1文件写入

ofstream outfile;	//创建输出文件流类对象
	
	float x = 3.2, y = 3.6;
	outfile.open("test.txt",ios::app);	//打开文件
	
	if(!outfile){
		cout<<"open error!"<<endl;
		exit(1);
	}else{
		cout<<"open success!"<<endl;
	}
	
	outfile<<x<<"\t"<<y<<endl;	//将变量值写入文件
	outfile.close();	//关闭文件

流式接口 只输出最终结果 python_c++_21

3.2文件输出

从text.txt中读入10个整数放在数组中,找出最大者和它在数组中的序号。

#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{  
	int a[10], max, i, order;
   ifstream infile("test.txt",ios::in);
   
   if(!infile){
   	cerr<<"open error!"<<endl;
    exit(1);
	}      
   for(i=0;i<10;i++){  
   		infile>>a[i];
	  	cout<<a[i]<<' ';   
   }
   
   cout<<endl;   
   max=a[0]; order=0;
   for(i=1;i<10;i++)
	   if(a[i]>max)
	   {max=a[i]; order=i;}   cout<<"max="<<max<<endl<<"order="<<
    order<<endl;
   infile.close();
   return 0;
}

流式接口 只输出最终结果 python_流式接口 只输出最终结果 python_22