C++ 的 ACM 模式输出

常用有三:

1. cin >> x

  • 读到 tab/space/enter 处停止,不会吃掉符号
  • 从缓冲区读数据到变量x,而不是从键盘输入读取。(读数据前清空缓冲区: cin.sync();)
用法解析
  • 输入一个数字或字符或字符串
  • 接收一个字符串(到char数组或string),遇 tab/space/enter 结束,但是并不会吃掉 遇到的 空格/换行符,该空格/换行符还会参与下一次的读取。

2. cin.get()getchar()

  • 用法同cin >> x , 但是区别在于会吃掉 tab/space
用法解析
  • cin>>读入数据完成之后,如果接下来的字符是换行符,那么在使用 getline()之前需要用getchar()把换行符吞掉,然后再使用getline()读入下一行数据。

3. getline(istream is, string str, 结束符)

  • 常用于读取以 , 分割开的字符串
  • 可以读入 SPACE/TAB,遇到ENTER停止读取;且读取完成后会丢弃末尾的换行符。
  • 结束符默认是换行符 ‘\n’
/*	例题: 输入 -->  输出
a,c,bb			a,bb,c
f,dddd			dddd,f
nowcoder		nowcoder
*/
#include<iostream>
#include<string>
#include<sstream>
#include<vector>
#include<algorithm>
using namespace std;
 
int main(){
    vector<string> res;
    string str;
    while(cin >> str){
        stringstream ss(str);
        string temp;
        // 分隔字符串
        while(getline(ss, temp, ',')){
            res.push_back(temp);
        }
        sort(res.begin(), res.end());
        for(int i = 0; i < res.size() - 1; i++){
            cout << res[i] << ",";
        }
        cout << res.back() << endl;
        res.clear();
    }
    return 0;
}

总结:

  1. cin >> x 可以用来读字符串数字, 但是局限在于无法区分 空格、换行,回车 ,遇到了就要停下来

    cin>>x 遇到换行符之后停止读取,但是不会读入这个换行符,在接下来的读取中还要考虑到这个换行符的存在;
    因此,如果接下来还是用cin读取,cin会跳过开头换行符继续下一行数据的读取,不会受影响。

  2. getchar() 基本同 cin , 但是会吃掉空格、回车,常用于判断字符串是否结束

    当同时使用cin>>,getline()时,需要注意的是,在cin>>读入数据完成之后,如果接下来的字符是\n,那么在使用 getline()之前需要用getchar()把换行符吞掉,然后再使用getline()读入下一行数据。
    否则,getline()会首先读入换行符,然后停止读取。由于getline()函数会丢弃数据末尾的换行符,因此最终读入的数据为空。
    示例:if(getchar() == '\n'){ ... }

  3. getline() 常用于读取用特殊符号分隔的字符串

    getline()函数遇到换行符后停止,不但读入这个换行符,而且在读取的数据中丢弃它,这样后续的getline()读取就不用考虑这个换行符的存在了。

参考文章

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值