您好,登录后才能下订单哦!
本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
流: 若干字节数据从一端到另一端我们叫做流
例如:操作文件,从程序到文件,数据的流动的操作称为流操作
流类体系
专门处理输入输出流、字符流、文件流,包含有:
流对象
流运算符 >> <<
输入/出流对象 + 流运算符 >> <<---处理输入输出的数据
字符流对象 + 流运算符 >> << ---处理字符流
文件的对象 + 流运算符 >> << ---读写文件
istream 类---cin 输入
ostream类---cout 输出
tip:输出流除了cout外,还有一些别的对象(效果和cout一样)
cerr ---标准出错
clog ---日志文件输出
#include <iostream>
using namespace std;
void testostream()     //output 
{
	//freopen()
	cout << "标准输出" << endl;		//cin/cout都可以重定向
	cerr << "标准错误输出" << endl;	//不能重定向 当觉得程序可能出错时用cerr输出,标识作用
	clog << "日志文件输出" << endl;  //可以重定向为文件
}
int main(){
 
    testostream();
}
/*输出*/
 
/*标准输出
 标准错误输出
 日志文件输出*/把程序的输入、输出重定向为文件
重定向是文件中的数据的格式要与程序读取的格式一致
输入重定向
#include<cstdio>
#include<iostream>
int main(){
 
    freopen("1.txt","r",stdin);//参数:文件名 读写方式 流
    int a,b;
    scanf("%d%d",&a,&b);       //把基本输入定向为文件,程序所有的输入由文件完成
    std::cout<<a+b;
 
}
/*输出*/
 
/* 在黑窗口输出3 */输出重定向
#include<cstdio>
#include<iostream>
int main(){
 
    freopen("1.txt","r",stdin);//参数:文件名 读写方式 流
    int a,b;
    scanf("%d%d",&a,&b);       //把基本输入定向为文件,程序所有的输入由文件完成
    std::cout<<a+b;
    freopen("2.text","w",stdout);
    printf("%d",a+b);
 
}
/*输出*/
 
/* 在2.txt中输出3 */正常的操作
通过IO流对象调用成员函数的方式
单个字符和字符串的输出处理
//调用成员函数的方式传常量、变量都可以
void testostream()    
{
//单个字符的输出
    cout.put('a');          //传常量    通过IO流对象调用成员函数的方式
	cout << 'a' << endl;    //正常的输出方式
 
	char c = 'C';
	cout.put(c);    //传变量
	cout << c << endl;
//多个字符/字符串的输出
	cout.write("ILoveyou",4); /*直接写入输出 后面的参数:指定长度,超过长度的部分不做输 
                                出截取输出没有'\0',只截取了前面4位*/
}
int main(){
 
    testostream();
}
/*输出*/
 
/*aa
  CC
  ILov*/单个字符和字符串的输入处理
void testostream()
{
//单个字符的输入
	/*  char c;
		c=cin.get();
		cout.put(c);    用中间变量接收返回值,再做输出*/
	cout.put(cin.get());    //要处理回车
	cout << endl;
 
//多个字符/字符串的输入
	cout << "字符串的处理"<<endl;
	while (cin.get() != '\n');
	//while(getchar()!='\n');
	char str[20] = "";   //准备一个字符串   注意不是返回值不能一步到位
	cin.getline(str, 20);//输入函数
	cout.write(str, 20); //输出函数 相对于流操作更安全,可以指定长度,同样需要清空缓冲区处理
}
int main() {
 
	testostream();
}
/*输出*/
 
/*a
  a
  字符串的处理
  hello
  hello*/注意不能用来处理string
string text; cin.getline(text,20); //报错,不能处理string,只能处理char*
格式控制字符
包含头文件 <iomanip>
常用的格式控制,一种是调用成员函数方式,一种流控制字符去做
设置有效位数: setprecision(n)
设置精度: fixed 结合 setprecision 使用
tip:流控制字符---c++用来控制格式的操作
设置格式
int main(){
 
	double pi = 34.12343;
	cout << "设置有效位数是:" << setprecision(4) << pi << endl;     //从整数位开始算
	cout << "有效小数位:" << fixed << setprecision(4) << pi << endl;//从小数位开始算
 
//所有的流控制符都会对应一个成员函数的方式
	cout.precision(4); 
	cout << "有效小数位:" << pi;/*设置完流格式不一定要立即输出,
                                 可以缓慢输出(在下一行输出)*/
 
	double pi = 34.12369;
	cout << "设置有效位数是:" << setprecision(4) << pi << endl;
	cout << "有效小数位:" << fixed << setprecision(4) << pi << endl;
	cout.precision(4); //所有的流控制符都会对应一个成员函数的方式
	cout << "有效小数位:" << pi;
}
/*输出   四舍五入 */
 
/* 设置有效位数是:34.12
   有效小数位:34.1234
   有效小数位:34.1234 
   设置有效位数是:34.12
   有效小数位:34.1237
   有效小数位:34.1237    */进制输出
int main(){
	cout << hex << 32 << endl;  //16进制
	cout << oct << 15 << endl;  //8进制输出
//流控制字符的方式
	cout << setbase(2) << 7 << endl; //2进制无效,不能是任意进制,任意进制的默认10进制输出
	
}
/*输出*/
 
/*20
  17
  7*/对齐方式和数据的宽度问题 制表符 '\t'
限制每个数据的位数不足补空格
1. 8位制表,不足8位 补空格
2. 超过8位,按照16位制表
//默认右对齐
int main(){
	
   cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;
   cout << setiosflags(ios::left);//ios::right右对齐 ios::left左对齐 数据不够用空格占位
   cout << setw(8) << "123" << setw(8) << "12344" << setw(8) << "3444" << endl;
   /*cout.width(8);
    cout<<"123"<<"123"<<"666";    调用成员函数的方式,只能管一个制表
    
}
/*输出*/
     123   12344    3444 //默认是右对齐方式
123     12344   3444
 
123     123666上述内容就是如何解析C++中IO流的输入输出流,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。