C++输入输出自我总结
2014-04-10 09:29
253 查看
先说一下最基本的输入输出函数
比如从c语言里继承的
1.scanf()
scanf("%d",&x); 注意一下一般在ACM竞赛里scanf比cin的效率要高,所以一般都用scanf
不过scanf无法读取空白字符(碰到空白字符就自动结束)这个大家可以测试一下.
2.gets()
gets()函数和scanf唯一不同的就是可以读取空白符,gets函数只有碰到回车换行符才会结束,而scanf
一旦碰到空白符就会自动结束.
3.getline()
说道结束标志,不得不说起getline,比如在一段 输入A#a格式的字符串里(A为字符串,a为数字)提取数字a
我们有2个办法
一个是利用strchar查找,之后sscanf分割,如:
不过这样显然十分的麻烦,这时候我们可以使用另外一个函数getline()
以下是一段函数的百科:
getline()函数会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。
在函数遇到和结束定界符相等的字符时函数结束,同时函数抽出定界符,此种情况下该定界符既不被放回输入流,也不被放入要生成的字符串。所以由此可以理解输入结束后的第一个回车是定界符,被确认后抛弃,而第二个才是程序执行运行时正常需要的!
举个例子
也就是说getline只有碰到'#'才会结束输入,不论是换行还是空白符都无法结束.
4.getchar()
这个函数的话用来读取单个字符的,下面说一下一个技巧,也是很多人经常容易犯的
5.cin,cout
输入输出流的话我自己也不是很清楚,不过以后有了使用的心得了的话会再补上,这里转一个网上输入输出流格式
的控制函数表
http://blog.csdn.net/virtualdesk/article/details/5355793
1.使用控制符控制输出格式
2.用流对象的 成员控制输出格式
cout.width(10);
cout.setf(ios::hex);
3.设置格式状态的格式标志
以小数形式,保留三位小数输出:
cout<<setprecision(3)<<setiosflags(ios::fixed)<<3.1415926<<endl;
比如从c语言里继承的
1.scanf()
scanf("%d",&x); 注意一下一般在ACM竞赛里scanf比cin的效率要高,所以一般都用scanf
不过scanf无法读取空白字符(碰到空白字符就自动结束)这个大家可以测试一下.
2.gets()
gets()函数和scanf唯一不同的就是可以读取空白符,gets函数只有碰到回车换行符才会结束,而scanf
一旦碰到空白符就会自动结束.
3.getline()
说道结束标志,不得不说起getline,比如在一段 输入A#a格式的字符串里(A为字符串,a为数字)提取数字a
我们有2个办法
一个是利用strchar查找,之后sscanf分割,如:
int main() { char A[100L]; char *p; int a; scanf("%s",A); p=strchr(A,'#'); sscanf(p+1,"%d",&a); printf("%d\n",a); }
不过这样显然十分的麻烦,这时候我们可以使用另外一个函数getline()
以下是一段函数的百科:
getline()函数会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。
在函数遇到和结束定界符相等的字符时函数结束,同时函数抽出定界符,此种情况下该定界符既不被放回输入流,也不被放入要生成的字符串。所以由此可以理解输入结束后的第一个回车是定界符,被确认后抛弃,而第二个才是程序执行运行时正常需要的!
举个例子
int main() { string A; getline(cin,A,'#'); int a; scanf("%d",&a); cout<<A<<endl; printf("%d\n",a); }
也就是说getline只有碰到'#'才会结束输入,不论是换行还是空白符都无法结束.
4.getchar()
这个函数的话用来读取单个字符的,下面说一下一个技巧,也是很多人经常容易犯的
int main() { char x[100L]; int m; scanf("%d",&m); getchar();//大家可以试试把这个去了会有什么区别? gets(x); puts(x); }
5.cin,cout
输入输出流的话我自己也不是很清楚,不过以后有了使用的心得了的话会再补上,这里转一个网上输入输出流格式
的控制函数表
http://blog.csdn.net/virtualdesk/article/details/5355793
1.使用控制符控制输出格式
控制符 | 作用 |
dec | 设置整数的基数为10 |
hex | 设置整数的基数为16 |
oct | 设置 整数的基数为8 |
setbase(n) | 设置整数的基数为n(n只能是16,10,8之一) |
setfill(c) | 设置填充字符c,c可以是字符常量或字符变量 |
setprecision(n) | 设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位 数)形式和scientific(指数)形式输出时,n为小数位数。 |
setw(n) | 设置字段宽度为n位。 |
setiosflags(ios::fixed) | 设置浮点数以固定的小数位数显示。 |
setiosflags(ios::scientific) | 设置浮点数以科学计数法(即指数形式)显示。 |
setiosflags(ios::left) | 输出数据左对齐。 |
setiosflags(ios::right) | 输出数据右对齐。 |
setiosflags(ios::shipws) | 忽略前导的空格。 |
setiosflags(ios::uppercase) | 在以科学计数法输出E和十六进制输出字母X时,以大写表示。 |
setiosflags(ios::showpos) | 输出正数时,给出“+”号。 |
resetiosflags | 终止已设置的输出格式状态,在括号中应指定内容。 |
流成员函数 | 与之作用相同的控制符 | 作用 |
precision(n) | setprecision(n) | 设置实 数的精度为n位。 |
width(n) | setw(n) | 设置字段宽度为n位。 |
fill(c) | setfill(c) | 设置填充字符c。 |
setf( ) | setiosflags( ) | 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。 |
ubsetf( ) | resetiosflags( ) | 终止已设置的输出格式状态。 |
cout.setf(ios::hex);
3.设置格式状态的格式标志
格式标志 | 作用 |
ios::left | 输出数据在本域宽范 围内左对齐 |
ios::right | 输出数据在本域宽范围内右对齐 |
ios::internal | 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充 |
ios::dec | 设置整数的基数为10 |
ios::oct | 设置整数的基数为8 |
ios::hex | 设置整数的基数为16 |
ios::showbase | 强制输出整数的基数(八进制以0打头,十六进制以0x打头) |
ios::showpoint | 强制输出浮点数的小点和尾数0 |
ios::uppercase | 在以科学计数法输出E和十六进制输出字母X时,以大写表示 |
ios::showpos | 输出正数时,给出“+”号。 |
ios::scientific | 设置浮点数以科学计数法(即指数形式)显示 |
ios::fixed | 设置浮点数以固定的小数位数显示 |
ios::unitbuf | 每次输出后刷新所有流 |
ios::stdio | 每次输出后清除 stdout,stderr |
cout<<setprecision(3)<<setiosflags(ios::fixed)<<3.1415926<<endl;
相关文章推荐
- C++控制台输入输出总结
- C++自我总结
- c/c++输入输出总结
- C++输入输出注意事项总结
- C++专题总结之输入输出
- c++面向对象基础学习自我总结
- C++中“++”,“--”操作符,下标操作符,输入输出操作符总结
- C++输入输出总结_输入
- 【总结】C/C++输入输出不完全总结(待续)
- c++输入输出总结
- C/C++输入输出流总结 (转载)
- C++输入输出总结
- C++输入输出总结
- C++中输入输出流ifstream/ofstream用法总结
- C/C++输入输出总结
- C++标准输入输出总结
- 关于C++中的虚拟继承的一些总结
- C++ 常量const简单总结
- STM32 SPI 自我学习总结 不断更新中
- [转]C++ int,char,string,CString类型转换(整理总结)