赞
踩
头文件 | 函数和描述 |
<iotream> | 该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。 |
<iomanip> | 该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。 |
<fstream> | 该文件为用户控制的文件处理声明服务。包含文件操作相关类型。 |
预定义的对象 cin 是 istream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的。C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。
get()函数有以下重载:
- #include<iostream>
- using namespace std;
- #include<string>
- #include<sstream>
- int main(int argc, char const *argv[]) {
- char c;
- cout << "cin.get()返回值=" << cin.get() << endl;
- cin.ignore(); //读取换行符
-
- cin.get(c);
- cin.ignore();
- cout << "c=" << c << endl;
-
- char str[5];
- cin.get(str, sizeof(str));
- cin.ignore();
- cout << "str=" << str << endl;
-
- stringbuf buf;
- cin.get(buf, '\n');
- cin.ignore();
- cout << "buf=" << buf.str() << endl;
-
- cout << cin.get() << endl;
- return 0;
- }
例中istream::ignore()函数的作用是读取缓冲区1个字符,作用和C语言中getchar()差不多。例子中get()函数不会读取最后的换行符。需要ignore()函数将末尾的换行符读掉。
cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的。C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。流插入运算符 << 在一个语句中可以多次使用,如上面实例中所示,endl 用于在行末添加一个换行符。例如:cout<<name<<" "<<age<<endl;
首先请包含<iomainip>头文件,setbase、setw、setfill、setiosflags、setprecision等函数均在此标准库。主要用于控制输出格式。
- int a = 10;
- cout << "a=" << dec << a << endl;//十进制
- cout << "a=" << hex << a << endl;//十六进制,字母默认小写
- cout << "a=" << oct << a << endl;//八进制
十六进制输出大写字母,需要用setiosflags(ios::uppercase)设置;输出小写字母需要用setiosflags(ios::lowercase)设置;且设置后对后续的十六进制输出一直有效。
- int b = 11;
- cout << setiosflags(ios::uppercase) << "a=" << hex << a << endl;
- cout << "b=" << hex << b << endl;
总结: dec:十进制;hex:十六进制;oct:八进制;setiosflags(ios::uppercase):十六进制字母大写;setiosflags(ios::lowercase):十六进制字母小写;
TIP: setbase(8/10/16)可替代oct/dec/hex;
cout<<showpos / setiosflags(ios::showpos) /setf(ios::showpos)可输出符号。
- int a = 10, b = 11;
- string NAME = "name";
- cout << setw(5) << "a===========" << a << endl;
- cout << "b=" << b << endl;
- cout << "NAME=" << setw(10) << NAME << endl;
由输出内容可知,setw()函数只会修饰后续第一个输出内容的输出域宽,且不会截取超过限制长度的输出内容。
- int a = 10, b = 11;
- string NAME = "name";
- cout << setw(5) << setfill('#') << "a" << a << endl;
- cout << "b=" << setw(5) << setiosflags(ios::left) << b << endl;
- cout << "NAME=" << setw(10) << NAME << endl;
由输出内容可知,setfill(c)、setiosflags(ios::left/ios::right)设置后对后续所需填充输出内容一直有效。
总结:setiosflags(ios::right) 靠右对齐;setiosflags(ios::left) 靠左对齐;setfill() 设置填充字符;此三个函数设置后对后续输出一直有效;setw()设置输出域宽,只修饰后续第一个输出内容,且不会截断超过部分内容。
setprecision(n);设置实数的精度为n位。setiosflags(ios::fixed);固定的浮点显示。setiosflags(ios::scientific);指数格式输出浮点数。
- double p1 = 3.1415926;
- double p2 = 3.14;
- double p3 = 0.31415926;
-
- cout << "p1=" << setprecision(4) << p1 << endl;
- cout << "p2=" << setprecision(4) << p2 << endl;
- cout << "p3=" << p3 << endl << endl;
setprecision(n)函数设置实数精度,若整数位大于0,则从整数位开始计算,整数位为0时,从小数点后一位开始计算;
- double p1 = 3.1415926;
- double p2 = 3.14;
- double p3 = 0.31415926;
-
- cout << "p1=" << fixed << p1 << endl;
- cout << "p2=" << fixed << p2 << endl;
- cout << "p3=" << setprecision(3) << p3 << endl << endl;
setiosflags(ios::fixed) / fixed / cout.setf(ios::fixed) 函数指定小数点后面保留几位小数,默认为6位;和setprecision(n)组合使用设置小数点后保留位数。
- double p1 = 3.1415926;
- double p2 = 3.14;
- double p3 = 0.31415926;
-
- cout << "p1=" << scientific << p1 << endl;
- cout << "p2=" << scientific << p2 << endl;
- cout << "p3=" << setprecision(2)<<p3 << endl;
setiosflags(ios::scientific) / scientific / cout.setf(ios::scientific) 函数以指数格式输出浮点数,默认小数点后保留6位,和setprecision(n)组合使用设置指数小数点后保留位数。
控制符 | 描述 |
---|---|
dec | 十进制 |
hex | 十六进制 |
oct | 八进制 |
setbase(n) | 设置输出进制n(可代替上面三个控制符) |
setw(n) | 设置输出域宽为n |
setfill(c) | 设置填充字符为c |
setprecision(n) | 设置实数精度 |
setiosflags(ios::fixed) | 设置小数保留位数(默认6位),可与setprecision组合使用。 |
setiosflags(ios::scientific) | 指数格式输出浮点数(默认6位),可与setprecision组合使用。 |
setiosflags(ios::left/right) | 左/右对齐 |
setiosflags(ios::uppercase) | 大写输出十六进制字母 |
setiosflags(ios::lowercase) | 小写输出十六进制字母 |
setiosflags(ios::skipws) | 输入流忽视空白字符(包括制表符换行符) |
TIPS:1、以上函数除了setw()输出域宽函数每次使用每次设置,其他函数一次设置,永久有效。
2、setiosflags()函数均有三种表示方法:
cout<<setiosflags(ios::scientific) ;
cout<<scientific;
cout.setf(ios::scientific);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。