C/C++編程筆記:C++中的stringstream及其應(yīng)用

stringstream將字符串對象與流相關(guān)聯(lián),使您可以像從流中讀取字符串一樣(例如cin)。

基本方法是–
clear()—清除流
str()—獲取并設(shè)置其內(nèi)容存在于流中的字符串對象。
運算符<< —將字符串添加到stringstream對象。
運算符>> —從stringstream對象中讀取內(nèi)容,
stringstream類在解析輸入時非常有用。
應(yīng)用范圍:
1.計算字符串中的單詞數(shù)

輸出:
? 字數(shù)是:6
2、打印字符串中單個單詞的頻率

3、給定的字符串中刪除空格
給定字符串,請刪除字符串中的所有空格并返回。
例:輸入:C語言? C++;輸出:C語言C++
預(yù)期的時間復(fù)雜度為O(n),并且只有一個字符串遍歷。
1)遍歷給定字符串的所有字符,請執(zhí)行以下操作
?????????a)如果當前字符是空格,則移動所有后續(xù)字符 字符返回一個位置并減小其長度 結(jié)果字符串。
上述解決方案的時間復(fù)雜度為O(n?2)。
更好的解決方案可以在O(n)的時間解決這個問題。這個想法是跟蹤到目前為止所看到的非空格字符的計數(shù)。
1)初始化'count'= 0(到目前為止看到的非空格字符的計數(shù))
2)遍歷給定字符串的所有字符,請執(zhí)行以下操作
? ? a)如果當前字符為非空格,則放置此字符
? ? ? ? 在索引“計數(shù)”處增加“計數(shù)”
3)最后,在索引'count'處放置'\ 0'
下面是上述算法的實現(xiàn)。

上述解決方案的時間復(fù)雜度為O(n),它只對字符串進行一次遍歷。
有朋友建議的另一種解決方案是使用預(yù)定義的函數(shù)。這是實現(xiàn):

希望對大家有幫助~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁上傳了一些學習C/C++編程的視頻教程,有興趣或者正在學習的小伙伴一定要去看一看哦!會對你有幫助的~
分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍分享:

編程學習視頻分享:
