输入格式

  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对象读取字符或字符串。

     string s = "ABCD";
stringstream ss(s);
char ch;
while(ss>>ch){
cout << ch << " ";
} //运行结果
//A B C D

又例如

     string s = "hello world";
stringstream ss(s);
string str;
while(ss>>str){
cout << str << " ";
} //运行结果
//hello world

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


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

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

  1. printf scanf cin cout的区别与特征

    printf和scanf是c语言的输入输出,学习c++以后,自然是用cin cout这两个更简单的输入输出 printf scanf 都需要进行格式控制,比较麻烦,但优点是速度比较快,毕竟多做了一些事 ...

  2. C++输入输出流 cin/cout 及格式化输出简介

    C++ 可通过流的概念进行程序与外界环境( 用户.文件等 )之间的交互.流是一种将数据自源( source )推送至目的地( destination )的管道.在 C++ 中,与标准输入/输出相关的流 ...

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

    SCI/EI期刊投稿Reply Letter常用格式总结          整个论文投稿的过程中,会遇到各种问题,需要我们向主编询问或是回复.下面主要总结了responses to the comme ...

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

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

  5. C#常用格式输出

    ylbtech- .NET-Basic:C#常用格式输出 C#常用格式输出 1.A,相关概念返回顶部 using System; namespace Test { class Formating { ...

  6. Swift - 正则表达式的使用(附用户名、邮箱、URL等常用格式验证)

    Swift虽然是一个新出的语言,但却不提供专门的处理正则的语法和类.所以我们只能使用古老的NSRegularExpression类进行正则匹配. 即先接受一个正则表达式的字符串,由此生成NSRegul ...

  7. markdown 常用格式API

    摘要 记录常用格式 参考:https://www.zybuluo.com/mdeditor 1. 标题 写法: 文字前加 #, 几个# 表示几级标题 标题下方增加 = 或 - 效果 标题1 标题2 标 ...

  8. MarkDown常用格式

    常用格式 ** :加粗 <br> : 换行 > :可以用来引用文章,很漂亮. 可以展开的文件夹格式 <details> <summary>框架</sum ...

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

    题目出处:http://codeforces.com/problemset/problem/892/B 题目大意:一队人同时举刀捅死前面一些人后还活着几个 #include<iostream&g ...

随机推荐

  1. Codeforces 868E Policeman and a Tree

    题意简述 给你一颗有n个点的树,每条边有边权,有一个警察一开始在点S,他的速度是1,即通过一条长度为x的边要花x单位时间. 有m个罪犯,一开始第i个在点x[i],他们的速度无限快. 如果罪犯和警察到达 ...

  2. 2014-09~11Removeapp配置篇

    金蝶ERP软件  Windows REMOVEAPP 功能需求:将服务器端金蝶客户端软件直接在本地实现,只需输入服务器密码即可启动该软件 配置需求:可用的金蝶软件,SERVER2008 或更高(必须激 ...

  3. Mybatis 中的<![CDATA[ ]]>浅析

    在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]&g ...

  4. Eclipse配置初始化(自用)

    以上都是性能调优的配置,下面是其他常用的配置和优化 设置utf-8编码 window -> preferences -> General -> workplace中text file ...

  5. Docker系列之镜像瘦身(五)

    前言 本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小,温馨提示:文中大图均可点击放大查看详细信息. 缓存(cache) Docker的优势之一在于提供了缓存, ...

  6. 基于模糊聚类和最小割的层次化三维网格分割算法(Hierarchical Mesh Decomposition)

    网格分割算法是三维几何处理算法中的重要算法,具有许多实际应用.[Katz et al. 2003]提出了一种新型的层次化网格分割算法,该算法能够将几何模型沿着凹形区域分割成不同的几何部分,并且可以避免 ...

  7. Dig命令使用大全(转自别人翻译),稍加整理

    Dig简介:   Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.由于一直缺失Dig man page文档,本文就权当一个dig使用向导吧.   Dig的 ...

  8. RabbitMQ消息丢失问题和保证消息可靠性-消费端不丢消息和HA(二)

    继续上篇文章解决RabbitMQ消息丢失问题和保证消息可靠性(一) 未完成部分,我们聊聊MQ Server端的高可用和消费端如何保证消息不丢的问题? 回归上篇的内容,我们知道消息从生产端到服务端,为了 ...

  9. Java集合框架之Vector浅析

    Java集合框架之Vector浅析 一.Vector概述: 位于java.util包下的Vector是Java集合框架的重要一员,虽然没有ArrayList那么的常用,但是我们还要对其做相关学习: 1 ...

  10. 安装hadoop集群--hdfs

    安装hadoop集群--hdfs 大数据软件 链接:https://pan.baidu.com/s/1-3PYLHMgvvONawJq55hstQ 提取码:izqf 准备一台干净的虚拟机-centos ...