• 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(字符串,接收个数,结束字符);
    • 当第三个参数省略时,系统默认为'';

      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 " ",将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=

  • 相关阅读:
    Nginx开启Gzip详解
    Nginx基础知识之————多模块(非覆盖安装、RTMP在线人数实例安装测试)
    ESA2GJK1DH1K安全篇: Android以SSL(单向认证)方式连接MQTT服务器
    ESA2GJK1DH1K安全篇: Wi-Fi 模块(8266)以SSL方式连接MQTT服务器(V0.1)
    单片机模块化程序: μCOS-II中内存管理程序使用说明
    单片机模块化程序: 数据缓存封装-内存管理实现(内存块长度充足版)
    单片机模块化程序: 数据缓存封装-环形队列实现
    单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗
    【SpringCloud】初识springCloud
    【mybatis源码学习】mybtias扩展点
  • 原文地址:https://www.cnblogs.com/xenny/p/9381468.html
Copyright © 2020-2023  润新知