文章目录
- 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;
输出:
图解cout输出原理:
cerr
cerr是console error的缩写,意为“在控制台显示出错信息”
用法与cout类似
cerr<<"Wrong input!!"<<endl;
输出:
clog
clog是console log的缩写
clog与cerr作用相同,都是在终端显示器上显示出错信息,
区别是:cerr输出的信息不经过缓冲区,clog输出的信息存放在缓冲区中,缓冲区满或遇到endl时向显示器输出
clog<<"这是一个clog输出的错误信息!"<<endl;
1.2 输出格式控制
1.2.1控制符控制输出格式
- 头文件:#include < iomanip >
- 格式:cout<<格式控制符<<数据
控制符表:
设置输出进制
cout<<hex<<"16进制:"<<20<<endl;
cout<<dec<<"10进制:"<<20<<endl;
cout<<oct<<"8进制:"<<20<<endl;
cout<<setbase(16)<<"16进制:"<<20<<endl;
cout<<setbase(8)<<"8进制:"<<20<<endl;
cout<<setbase(10)<<"10进制:"<<20<<endl;
设置输出字符个数和填充字符
cout<<setfill('*')<<setw(10)<<"hello!"<<endl;
设置数字一共多少位
cout<<setprecision(3)<<3.1415<<endl;
cout<<setprecision(2)<<10000.3<<endl;
设置输出数字对齐方式
cout<<setw(15)<<setprecision(3)<<setiosflags(ios::scientific);
cout<<setiosflags(ios::right)<<3.14159<<endl;
cout<<setiosflags(ios::left)<<3.14159<<endl;
cout<<setiosflags(ios::uppercase)<<setiosflags(ios::scientific)<<3.1415926<<endl;
1.2.2成员函数控制输出格式
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');
输出:
2.标准输入流
2.1 cin流
- 如果输入流在正常状态,cin的返回值为true(真),即cin为一个非0值
int a;
if(!(cin>>a)){
cerr<<"error!";
}else{
cout<<"finish!";
}
2.2 get函数
流成员函数get有3种形式:无参数、有一个参数、有三个参数
cin.get()
将输入的句子,放在字符串缓冲区,用c一个一个读取,然后一个一个输出
int c;
cout<<"输入一个句子:"<<endl;
while((c = cin.get())!=EOF){
cout.put(c);
}
cin.get(ch)
char c;
cin.get(c); //读取一个字符放入c中
cout.put(c);
cin.get(字符串,字符个数,终止字符)
char ch[20];
cin.get(ch,10,'\n');
cout<<ch<<endl;
2.3其他常用函数
getline函数
char ch[20];
cin.getline(ch,10,'\n');
cout<<ch<<endl;
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(); //关闭文件
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;
}