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;
}
};