C++中stringstream的用法和實(shí)例
之前在leetcode中進(jìn)行string和int的轉(zhuǎn)化時(shí)使用過(guò)istringstream,現(xiàn)在大致總結(jié)一下用法和測(cè)試用例。
介紹:C++引入了ostringstream、istringstream、stringstream這三個(gè)類,要使用他們創(chuàng)建對(duì)象就必須包含sstream.h頭文件。
istringstream類用于執(zhí)行C++風(fēng)格的串流的輸入操作。
ostringstream類用于執(zhí)行C風(fēng)格的串流的輸出操作。
stringstream類同時(shí)可以支持C風(fēng)格的串流的輸入輸出操作。
下圖詳細(xì)描述了幾種類之間的繼承關(guān)系:
istringstream是由一個(gè)string對(duì)象構(gòu)造而來(lái),從一個(gè)string對(duì)象讀取字符。
ostringstream同樣是有一個(gè)string對(duì)象構(gòu)造而來(lái),向一個(gè)string對(duì)象插入字符。
stringstream則是用于C++風(fēng)格的字符串的輸入輸出的。
代碼測(cè)試:
#include<iostream> #include <sstream> using namespace std;<pre name="code" class="cpp">int main(){ string test = "-123 9.87 welcome to, 989, test!"; istringstream iss;//istringstream提供讀 string 的功能 iss.str(test);//將 string 類型的 test 復(fù)制給 iss,返回 void string s; cout << "按照空格讀取字符串:" << endl; while (iss >> s){ cout << s << endl;//按空格讀取string } cout << "*********************" << endl; istringstream strm(test); //創(chuàng)建存儲(chǔ) test 的副本的 stringstream 對(duì)象 int i; float f; char c; char buff[1024]; strm >> i; cout <<"讀取int類型:"<< i << endl; strm >> f; cout <<"讀取float類型:"<<f << endl; strm >> c; cout <<"讀取char類型:"<< c << endl; strm >> buff; cout <<"讀取buffer類型:"<< buff << endl; strm.ignore(100, ','); int j; strm >> j; cout <<"忽略‘,'讀取int類型:"<< j << endl; system("pause"); return 0; }
輸出:
總結(jié):
1)在istringstream類中,構(gòu)造字符串流時(shí),空格會(huì)成為字符串參數(shù)的內(nèi)部分界;
2)istringstream類可以用作string與各種類型的轉(zhuǎn)換途徑
3)ignore函數(shù)參數(shù):需要讀取字符串的最大長(zhǎng)度,需要忽略的字符
代碼測(cè)試:
int main(){ ostringstream out; out.put('t');//插入字符 out.put('e'); out << "st"; string res = out.str();//提取字符串; cout << res << endl; system("pause"); return 0; }
輸出:test字符串;
注:如果一開始初始化ostringstream,例如ostringstream out("test"),那么之后put或者<<時(shí)的字符串會(huì)覆蓋原來(lái)的字符,超過(guò)的部分在原始基礎(chǔ)上增加。
stringstream同理,三類都可以用來(lái)字符串和不同類型轉(zhuǎn)換。
以上就是小編為大家?guī)?lái)的C++中stringstream的用法和實(shí)例全部?jī)?nèi)容了,希望大家多多支持我們~
欄 目:C語(yǔ)言
下一篇:基于C++中覆蓋,重載,隱藏的一點(diǎn)重要說(shuō)明
本文標(biāo)題:C++中stringstream的用法和實(shí)例
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1919.html
您可能感興趣的文章
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)數(shù)怎么表達(dá)
- 04-02c語(yǔ)言沒有round函數(shù) round c語(yǔ)言
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎么打出三角函數(shù)的值
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解
- 01-10APUE筆記之:進(jìn)程環(huán)境詳解
- 01-10c++中inline的用法分析
- 01-10如何尋找數(shù)組中的第二大數(shù)


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子