istringstream的使用

C++引入了ostringstream、istringstream、stringstream這三個類,要使用他們創建對象就必須包含: #include <sstream>:

  • istringstream類用於執行C++風格的串流的輸入操作。
  • ostringstream類用於執行C風格的串流的輸出操作。
  • strstream類同時可以支持C風格的串流的輸入輸出操作。

istringstream的構造函數如下:

istringstream::istringstream(string str);

示例程序:

輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。爲簡單起見,標點符號和普通字母一樣處理。例如輸入字符串"I am a student. “,則輸出"student. a am I”

思路:
將這個字符串中的所有單詞都拆分出來,並放到棧裏面,然後依次出棧重新連接成字符串。那麼重點來了,如何拆分裏面的單詞?

class Solution {
public:
    string reverseWords(string s) {
        string ans, str;
        stack<string> strs;

        istringstream ss(s);
        while(ss >> str) {
            strs.push(str);
        }

        int firstword = 1;
        while(!strs.empty()) {
            if(!firstword)
                ans += " ";

            ans += strs.top();
            strs.pop();
            firstword = 0;
        }
        return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章