zoukankan      html  css  js  c++  java
  • 【C++】stringstream

    通过一道题,记录C++ stringstream 的使用。

    题目描述

    newcoder 上练习基本io的一道题,题目大意是说,输入有多行,每行多个单词,以空格分隔,要求对每一行的单词按字典序排列后重新输出,依然用空格分隔。
    例如,输入:

    a c bb
    f ddd

    输出:

    a bb c
    ddd f

    解题思路

    C语言可以对每一个输入的字符做判断,手动分割字符串;C++可以考虑按行输入之后,用 stringstream 来再次分割字符串。
    按行输入有多种方式,而且非常相似,包括:gets、getline、cin.getline 等,这里推荐直接用 getline 简单直接。
    stringstream 每次构造析构是有开销的,好的实践是复用 stringstream 对象,注意不仅要通过 str() 函数来重置字符串对象,还要用 clear() 清空io标志。

    参考代码

    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <vector>
    #include <sstream>
    using namespace std;
    int main() {
        string line;
        stringstream sin;
        vector<string> vec;
        //while(cin >> line) {
        while(getline(cin, line)) {
            vec.clear();
            sin.str(line);
            sin.clear();
            //stringstream sin(line);
            string s;
            while(sin >> s) {
                vec.push_back(s);
            }
            sort(vec.begin(), vec.end());
            if (vec.empty()) continue;
            cout << vec[0];
            for (int i = 1; i<vec.size(); i++) {
                cout << ' ' << vec[i];
            }
            cout << endl;
        }
    }
    
  • 相关阅读:
    答题卡
    hdu 5451 Best Solver
    L. Poor God Water(ACM-ICPC 2018 焦作赛区网络预赛)
    MicroRNA Ranking(Tehran2016)
    Split The Tree(2018东北四省赛)
    Django项目基础开发流程
    暑假学习进度记录墙
    抖音字体设置
    十大危险cmd指令
    奶牛的聚会
  • 原文地址:https://www.cnblogs.com/zhcpku/p/15113164.html
Copyright © 2011-2022 走看看