目录
1.浮点数据输出控制
double value = 12.345678;
//默认情况下,cout输出6位有效数字
cout<<value<<endl; //12.3456
//可以修改输出精度
cout.precision(4);
cout<<value<<endl; //12.34
//想要精度表示小数点后面位数
cout.flag(cout.fixed); //定点法:精度表示小数点后面位数
cout<<value<<endl; //12.34
cout.unsetf(cout.fixed); //取消定点法
2.cin数据输入
用户键盘输入数据按下回车后,数据送到输入缓冲区,cin从缓冲区读取;
当缓冲区有数据时,cin直接读取。缓冲区没有数据时,程序会暂停,等待用户输入
3.数据输入错误时
输入数据时,前面数据输入错误,导致后面数据不能输入
int a;
int b;
int c;
cin >> a >> b >> c ;
解决方法:
cout<<”请输入一个整数”<<endl;
cin>>a:
if(cin.fail()){
cout<<”输入错误,应输入一个整数”<<endl;
cin.clear(); //清除cin错误标记,使后续输入可以正常进行
cin.sync(); //但是已经输入数据还在缓冲区,需要清空缓冲区(在VC++、g++中可行在VS中无效)
}
4.字符串初始化
1.string name1=”aaaa”
2.string name2;
name2=name1;
3.string name3(“aaaa”);
4.string name4(name3);
5.string name5( 10 , ’A’ ); //等效于string name5 (“AAAAAAAAAA”)
5.string输入与输出
使用std::cin>>输入
从第一个非空白字符开始,直到遇到空白字符停止输入
空白字符☞:空格、指标、回车
string a ;
string b;
//假设用户输入:清华 考古 金融;“金融”则会存留在缓冲区
cin >> a >> b;
6.string读取一行
string addr;
getline(cin ,addr) ; //读取一行字符串保存到字符串变量addr中
//判断字符串是否为空
if ( addr.empty( ) ); //如果为空则返回true
//计算字符串长度
size( );
length( );
7. C语言字符串输入、输出
char name[16];
chanr addr [64];
printf ( “ 姑娘芳名? \n “ );
//输入 小芳\n ->输入缓冲区: 小芳\n
scanf (“%s”,name);
printf(“%s姑娘,家住何地 “ , name);
gets(addr) ; //读取一行,直到遇到回车符
//scanf将小芳读取,缓冲区剩下’\n’,gets(addr)遇到回车符即停止,所以字符addr为空
//清空输入缓冲区
fflush(stdin); //fflush:刷新\清空 stdin:标准输入设备
8.位运算符
8.1位与运算符 &
位与运算符 &
0&0 0
0&1 0
1&0 0
1&1 1
cout << “8 & 3” << ( 8 & 3 ) << endl ; //输出0
/*
8 00001000
3 00000011
&——————
00000000 -> 0
输出0
*/
8.2位或运算符 |
位或运算符 |
0|0 0
0|1 1
1|0 1
1|1 1
cout << “ 8|1” << (8 | 1 ) << endl; //输出11
/*
8 00001000
3 00000011
&——————
00001011 ->11
输出11
*/
8.3位非运算符 ~
位非运算符 ~
~1 0
~0 1
char a =~8;
cout << int (a)<< endl
/*
8 00001000
~——————
11110111 ->247
输出247
*/
8.4异或 ^
异或^
0^0 0
1^1 0
0^1 1
1^0 1
cout << ( 8 ^ 3 ) << endl; //输出11
/*
8 00001000
3 00000011
&——————
00001011 -> 11
输出11
*/
8.5左移 <<
左移运算符 <<
cout << (8 << 1) << endl ; //输出16
/*
8 00001000
<< 000010000 右边位置用0补上 左边位置超出的直接抛弃
n<<m ->n*2^m
*/
左移运算只适用于:int / short /long /char等定点整数型(float / double 浮点数类型不能使用)
8.6右移 >>
右移运算符>>
向右操作是无符号类型,左边多出位用0填充
有操作是有符号类型,左边多出位用符号位填充
向左移动n个位置,等同于除以2 的n次方
cout << ( 8 >> 1 ) << endl ; //输出4