千家信息网

如何解析C++中IO流的输入输出流

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。介绍流: 若干字节数据从一端到另一端我们叫做流例如:操作文
千家信息网最后更新 2024年09月22日如何解析C++中IO流的输入输出流

本篇文章为大家展示了如何解析C++中IO流的输入输出流,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

介绍

流: 若干字节数据从一端到另一端我们叫做流

例如:操作文件,从程序到文件,数据的流动的操作称为流操作

流类体系

专门处理输入输出流、字符流、文件流,包含有:

  • 流对象

  • 流运算符 >> <<

输入/出流对象 + 流运算符 >> <<---处理输入输出的数据

字符流对象 + 流运算符 >> << ---处理字符流

文件的对象 + 流运算符 >> << ---读写文件

基本输入、输出流

istream 类---cin 输入

ostream类---cout 输出

tip:输出流除了cout外,还有一些别的对象(效果和cout一样)

  • cerr ---标准出错

  • clog ---日志文件输出

#include using namespace std;void testostream()     //output {        //freopen()        cout << "标准输出" << endl;               //cin/cout都可以重定向        cerr << "标准错误输出" << endl;     //不能重定向 当觉得程序可能出错时用cerr输出,标识作用        clog << "日志文件输出" << endl;  //可以重定向为文件}int main(){     testostream();}/*输出*/ /*标准输出 标准错误输出 日志文件输出*/

freopen

把程序的输入、输出重定向为文件

重定向是文件中的数据的格式要与程序读取的格式一致

输入重定向

#include#includeint main(){     freopen("1.txt","r",stdin);//参数:文件名 读写方式 流    int a,b;    scanf("%d%d",&a,&b);       //把基本输入定向为文件,程序所有的输入由文件完成    std::cout<

输出重定向

#include#includeint main(){     freopen("1.txt","r",stdin);//参数:文件名 读写方式 流    int a,b;    scanf("%d%d",&a,&b);       //把基本输入定向为文件,程序所有的输入由文件完成    std::cout<

字符类的处理

  • 正常的操作

  • 通过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 << "字符串的处理"<

注意不能用来处理string

 string text; cin.getline(text,20);    //报错,不能处理string,只能处理char*

格式控制字符

包含头文件

常用的格式控制,一种是调用成员函数方式,一种流控制字符去做

  • 设置有效位数: 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流的输入输出流,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0