ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info]# 输入输出的基本操作 本应是按位左移,右移运算符,但在'iostream.h'头文件中被重载为基本数据类型数据的**插入运算符**和**提取运算符**. cout>表达式1>>...>>表达式n; 一个cout语句可以分写在若干行或多个cout语句;cin类似. ~~~ cin>>a>>b>>c; Cout<<a   <<b   <<c; ~~~ 不能用一个插入运算符<<插入多个输出项. ~~~ cout<<a,b,c;   //error ~~~ 在用cin输入时,系统会根据变量的类型从输入流中提取相应长度的字节. 注意:cin语句将跳过空格,回车,换行字符;而在C中将不被跳过,如用函数scanf,getchar. C++中endl相当于C中的\\n起到换行的作用 >[info]# 输入输出流中的控制字符 **头文件:iomanip.h** | 控制字符 | 作用 | | ---------------------------- | ------------------ | | hex | 置基数为16 | | oct | 置基数为8 | | dec | 置基数为10 | | setfill(c) | 填充字符c | | setprecision(n) | 设置显示小数的精度 | | setw | 设置域宽 | | setiosflags(ios::fixed) | 固定的浮点显示 | | setiosflags(ios::scientific) | 指数表示 | | setiosflags(ios::left) | 左对齐 | | setiosflags(ios::right) | 右对齐 | | setiosflags(ios::skipws) | 忽略前导空白 | | setiosflags(ios::uppercase) | 16进制数大写输出 | | setiosflags(ios::lowercase) | 16进制数小写输出 | **设置值的输出宽度** - 除了使用空格来强行控制输出间隔外,还可以使用setw(n)控制符. - 如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的字符数. - 如果一个值的字符数比setw(n)确定的字符个数要少,则在数字字符前显示空格. - setw(n)仅仅影响下一个数值输出. - setw(n)的默认值为宽度0,即setw(0). **setprecision(n)的用法** - 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。 - 如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。 - 如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。 - setprecision(n)在C++中的最小有效个数是1。setprecision(0)相当于setprecision(1)。 ## **例子** ``` /* ******控制字符浮点显示****** */ #include <iostream> #include <iomanip> //要用到格式控制符 using namespace std; int main() { double amount = 22.0/7; cout <<amount <<endl; cout <<setprecision(0) <<amount <<endl <<setprecision(1) <<amount <<endl <<setprecision(2) <<amount <<endl <<setprecision(3) <<amount <<endl <<setprecision(4) <<amount <<endl; cout <<setiosflags(ios::fixed); cout <<setprecision(8) <<amount <<endl; cout <<setiosflags(ios::scientific) <<amount <<endl; cout <<setprecision(6); //重新设置成原默认设置 return 0; } ``` ``` /* ******使用填充字符****** */ #include <iostream> #include <iomanip> using namespace std; int main() { cout <<setfill(’*’) <<setw(2) <<21 <<endl <<setw(3) <<21 <<endl <<setw(4) <<21 <<endl; cout <<setfill(’ ’); // 恢复默认设置 return 0; } ``` ``` /* ******左右对齐输出****** */ #include <iostream> #include <iomanip> using namespace std; int main() { cout <<setiosflags(ios::right) <<setw(5) <<1 <<setw(5) <<2 <<setw(5) <<3 <<endl; cout <<setiosflags(ios::left) <<setw(5) <<1 <<setw(5) <<2 <<setw(5) <<3 <<endl; return 0; } ``` ``` /* ******强制显示小数点****** */ #include <iostream> #include <iomanip> using namespace std; int main() { cout <<10.0/5 <<endl; cout <<setiosflags(ios::showpoint) <<10.0/5 <<endl; return 0; } ``` ``` /* ******强制显示符号位****** */ #include <iostream> #include <iomanip> using namespace std; int main() { cout <<10 <<" " <<-20 <<endl; cout <<setiosflags(ios::showpos) <<10 <<" " <<-20 <<endl; return 0; } ``` ``` /* ******小数点对齐****** */ #include <iostream> #include <iomanip> using namespace std; int main( ) { double a=123.456,b=3.14159,c=-3214.67; cout<<setiosflags(ios∷fixed) <<setiosflags(ios∷right) <<setprecision(2); cout<<setw(10)<<a<<endl; cout<<setw(10)<<b<<endl; cout<<setw(10)<<c<<endl; return 0; } ```