技术交流QQ群:1027579432,欢迎你的加入!
1.Cpp中基本的输入输出
- C++标准库提供了一组丰富的输入/输出功能,将在后续的章节进行介绍。本章将讨论C++编程中最基本和最常见的I/O操作。C++的I/O发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
2.I/O库文件介绍
I_O库头文件.png
2.1 标准输出流cout
- 预定义的对象cout是iostream类的一个实例。cout对象"连接"到标准输出设备,通常是显示屏。cout是与流插入运算符<<结合使用的,如下所示:
// 标准输出cout char str[] = {"Hello C++"}; cout << "Value of str is: " << str << endl;
- C++编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<<运算符被重载来输出内置类型(整型、浮点型、double型、字符串和指针)的数据项。流插入运算符<<在一个语句中可以多次使用,如上面实例中所示,endl用于在行末添加一个换行符。
2.2 标准输入流cin
- 预定义的对象cin是iostream类的一个实例。cin对象附属到标准输入设备,通常是键盘。cin是与流提取运算符>>结合使用的,如下所示:
// 标准输入cin cout << "请输入你的名字: "; char name[50]; cin >> name; cout << "你的名字是: " << name << endl;
- C++编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。流提取运算符>>在一个语句中可以多次使用,如果要求输入多个数据,可以使用如下语句:
cin >> name >> age; 等价于cin >> name ; cin >> name;
2.3 标准错误流cerr
- 预定义的对象cerr是iostream类的一个实例。cerr对象附属到标准错误设备,通常也是显示屏,但是 cerr对象是非缓冲的,且每个流插入到cerr都会立即输出。cerr也是与流插入运算符<<结合使用的,如下所示:
// 标准错误cerr char error[] = "出现错误啦..."; cerr << error << endl;
2.4 标准日志流clog
- 预定义的对象clog是iostream类的一个实例。clog对象附属到标准错误设备,通常也是显示屏,但是 clog 对象是缓冲的。这意味着每个流插入到clog都会先存储在缓冲在,直到缓冲填满或者缓冲区刷新时才会输出。clog也是与流插入运算符<<结合使用的,如下所示:
// 标准日志流clog char logs[] = "记录日志..."; clog << logs << endl;
3.输入输出流中的函数(模板)
cout << setiosflags(ios::left|ios::showpoint); // 设置做对齐,一一般的实数方式显示 cout.precision(5); // 设置除小数点外有5位有效数字 cout << 124.456789 << endl; cout.width(10); // 设置显示域宽10 cout.fill('*'); // 在显示区域空白处用*填充 cout << resetiosflags(ios::left); // 清楚状态左对齐 cout << setiosflags(ios::right); // 设置右对齐 cout << 123.456789 << endl; cout << setiosflags(ios::left|ios::fixed); // 设置左对齐,以固定小数位显示 cout.precision(3); // 设置实数显示3位小数 cout << 999.123456 << endl; cout << resetiosflags(ios::left|ios::fixed); // 清楚左对齐和定点格式 cout << setiosflags(ios::left|ios::scientific); // 设置左对齐,以科学技术法显示 cout.precision(3); // 设置保留3位小数 cout << 123.456789 << endl;
- 其中cout.setf跟setiosflags一样,cout.precision跟setprecision一样,cout.unsetf跟 resetiosflags一样。
setiosflags(ios::fixed) 固定的浮点显示 setiosflags(ios::scientific) 指数表示 setiosflags(ios::left) 左对齐 setiosflags(ios::right) 右对齐 setiosflags(ios::skipws) 忽略前导空白 setiosflags(ios::uppercase) 16进制数大写输出 setiosflags(ios::lowercase) 16进制小写输出 setiosflags(ios::showpoint) 强制显示小数点 setiosflags(ios::showpos) 强制显示符号
cout.setf常用标志.png
iostream中定义的操作符1.png
iostream中定义的操作符2.png
iomanip中的操作符.png