C++输入输出常用格式(cin,cout,stringstream)

输入格式

  1、cin>>a;

  • 最基本的格式,适用于各种类型。会过滤掉不可见字符例如空格,TAB,回车等

  2、cin>>noskipws>>ch[i];

  • 使用了 noskipws流控制,不会过滤空白字符

  3、cin.get(ch); 或 ch = cin.get();

  • 接收一个字符,类似于getchar();

  4、cin.getline(s,k);

  • 接收一行中k个字符,可以接收空格
  • cin.getline()实际有三个参数,cin.getline(字符串,接收个数,结束字符);
  • 当第三个参数省略时,系统默认为‘\0‘;

  5、getline(cin,s);

  • 和cin.getline()类似,读入一行字符串,值得注意的是cin.getline()属于istream流,而getline()属于string流,二者并不相同。

输出格式

  1、cout << a;

  • 基本格式,适用于各种类型

  2、cout << setprecision(k) << a;

  • 设置位数,和printf中的%6d此格式类似;
  • 若是想要设置小数点后位数,则用cout << fixed << setprecision(k) << a; 控制小数点后位数

  3、cout << setfill(ch) << setw(k) << a;

  • 设置长度以及填充字符,例如cout << setfill(‘0‘) << setw(3) << 1;输出001.

  4、cout << hex << setiosflags(ios::uppercase) << a; 或 cout << hex << uppercase << a;

  • hex控制输出的格式,默认为dec(十进制),可手动设置dec,hex,oct。
  • setiosflags为控制格式,ios::uppercase 为输出大写十六进制格式,也可以省略setiosflags直接写uppercase.一共有7种格式
  • setiosflags(ios::fixed) --- 固定的浮点显示
  •   setiosflags(ios::scientific) --- 指数表示
  •   setiosflags(ios::left) ---左对齐
  •   setiosflags(ios::right) ---右对齐
  •   setiosflags(ios::skipws) --- 忽略前导空白
  •   setiosflags(ios::uppercase) --- 16进制数大写输出
  •   setiosflags(ios::lowercase) ---16进制数小写输出

  5、endl

这也是cout中很重要的一个东西,不仅仅只是提供一个换行,endl还会刷新缓冲区。

cout会对输出内容进行缓冲,所以输出的内容并不会立即输出到显示器而是被存储在缓冲区中。

一下三种情况会进行输出:刷新缓冲区,缓冲区满时,关闭文件。

而endl就是刷新缓存区,强制进行输出,若是想观察不刷新缓冲区的情况可以加一行#define endl "\n",将endl用换行符代替,观察输出情况。

  • PS:值得注意的是只有setw的设置只有当次输出有用,下一个cout就会失效,而其他所有控制格式会永久生效。

StringStream

这个东西单独讲,比较重要,包含在sstream库中。

istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C风格的串流的输入输出操作。

然后stringstream的作用就是从string对象读取字符或字符串。

1     string s = "ABCD";
2     stringstream ss(s);
3     char ch;
4     while(ss>>ch){
5         cout << ch << " ";
6     }
7
8     //运行结果
9     //A B C D

又例如

1     string s = "hello world";
2     stringstream ss(s);
3     string str;
4     while(ss>>str){
5         cout << str << " ";
6     }
7
8     //运行结果
9     //hello world

在某些题目需要处理字符串时,这些题目往往是输入的一行中包含多个字符以及空格,这个时候就可以利用 stringstream进行单个字符或者单个字符串分析处理了。



还是那句话,其实啥都不是很难,多敲代码,多运用就熟悉了 =7=

原文地址:https://www.cnblogs.com/xenny/p/9381468.html

时间: 2024-10-13 03:13:59

C++输入输出常用格式(cin,cout,stringstream)的相关文章

scanf printf gets() puts(),cin cout

最近在练机试题,常用的C和C++输入输出如下: 1 scanf 和printf int a; scanf("%d",&a) ; printf("%d",a); printf("\n"); double b;scanf("%"); char c; scanf("%c",&c);printf("%c",c); long int a; scanf("%ld"

PAT甲级 1028 List Sorting (25分)(cin cout 超时问题)

注意: 用scanf 和printf 进行输入输出 否则超时 cin,cout速度慢的原因就是它会将数据先读入缓冲区,然后再读入,所以与scanf的直接读入会有点时间差距. 1.换成scanf 和 printf输入输出 2.加一条语句 ios::sync_with_stdio(false); 题目代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algori

SCI/EI期刊投稿 Reply Letter 常用格式总结

SCI/EI期刊投稿Reply Letter常用格式总结 整个论文投稿的过程中,会遇到各种问题,需要我们向主编询问或是回复.下面主要总结了responses to the comments,以及催稿信的模板. 1.回复信(Response Letter) 在期刊投稿中,首次录用的比例相对较小,大部分的文章都会进行小修或是大修.如果是大修的话,就需要好好的修改文章,并认真的回复审稿人的意见.审稿人的意见一般都是比较有价值的. 1)常用格式: Dear Editor, We quite apprec

acdream B - 郭式树 (水题 卡cin,cout, 卡LL)

题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned   int   0-4294967295   int   2147483648-2147483647 unsigned long 0-4294967295long   2147483648-2147483647long long的最大值:9223372036854775807long long的最小值

892B. Wrath#愤怒的连环杀人事件(cin/cout的加速)

题目出处:http://codeforces.com/problemset/problem/892/B 题目大意:一队人同时举刀捅死前面一些人后还活着几个 #include<iostream> #define IO ios::sync_with_stdio(false);\cin.tie(0);\cout.tie(0); using namespace std; typedef __int64 LL; const int maxn = 2e6+10; int p[maxn]; //库中有max

如何提高cin/cout的速度

如何提高cin/cout的速度 写在前面 在无数的算法比赛中,不难看到下面这样的东西: ios::sync_with_stdio(false); 甚至是这样的东西: ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); 现在,尽量用"\n"替换可以替换的endl .(考虑流输出) 好了,以上就是我目前知道的技巧. 为什么 [ref] sync_with_stdio(), tie()的应用 sync_

cin\cout输入输出控制

输入输出流的控制符 控制符 作 用 dec 设置数值的基数为10 hex 设置数值的基数为16 oct 设置数值的基数为8 setfill(c) 设置填充字符c,c可以是字符常量或字符变量 setprecision(n) 设置浮点数的精度为n位.在以一般十进制小数形式输出时,n代表有效数字.在以fixed(固定小数位数)形式和 scientific(指数)形式输出时,n为小数位数 setw(n) 设置字段宽度为n位 setiosflags( ios::fixed) 设置浮点数以固定的小数位数显示

九度cin/cout耗时原因

做九度题的时候,由于数据量大,很多情况下得用scanf和printf代替cin和cout用于输入输出,不然会报错超时不能AC. 有三条建议用于提高C++的输入输出速度: At the first line in main function,add :std::ios_base::sync_with_stdio(false).which cancel theSynchronization between <iostream> and <cstdio>; At the second l

加速C++ cin,cout的速度

用以下两行代码: ios::sync_with_stdio(false); //加速 cin.tie(0); 首先sync_with_stdio(false)是为了打断iostream输入输出到缓存,可以节约很多时间,使之与scanf相差无几. tie是将两个stream绑定的函数,空参数的话返回当前的输出指针,即tie(0)与tie(nullptr)来解决cin与cout的绑定. 原文地址:https://www.cnblogs.com/Bella2017/p/11519670.html