C++中stringstream的用法和實(shí)例
之前在leetcode中進(jìn)行string和int的轉(zhuǎn)化時(shí)使用過(guò)istringstream,現(xiàn)在大致總結(jié)一下用法和測(cè)試用例。
介紹:C++引入了ostringstream、istringstream、stringstream這三個(gè)類(lèi),要使用他們創(chuàng)建對(duì)象就必須包含sstream.h頭文件。
istringstream類(lèi)用于執(zhí)行C++風(fēng)格的串流的輸入操作。
ostringstream類(lèi)用于執(zhí)行C風(fēng)格的串流的輸出操作。
stringstream類(lèi)同時(shí)可以支持C風(fēng)格的串流的輸入輸出操作。
下圖詳細(xì)描述了幾種類(lèi)之間的繼承關(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 類(lèi)型的 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類(lèi)型:"<< i << endl;
strm >> f;
cout <<"讀取float類(lèi)型:"<<f << endl;
strm >> c;
cout <<"讀取char類(lèi)型:"<< c << endl;
strm >> buff;
cout <<"讀取buffer類(lèi)型:"<< buff << endl;
strm.ignore(100, ',');
int j;
strm >> j;
cout <<"忽略‘,'讀取int類(lèi)型:"<< j << endl;
system("pause");
return 0;
}
輸出:

總結(jié):
1)在istringstream類(lèi)中,構(gòu)造字符串流時(shí),空格會(huì)成為字符串參數(shù)的內(nèi)部分界;
2)istringstream類(lèi)可以用作string與各種類(lèi)型的轉(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字符串;
注:如果一開(kāi)始初始化ostringstream,例如ostringstream out("test"),那么之后put或者<<時(shí)的字符串會(huì)覆蓋原來(lái)的字符,超過(guò)的部分在原始基礎(chǔ)上增加。
stringstream同理,三類(lèi)都可以用來(lái)字符串和不同類(lèi)型轉(zhuǎn)換。
以上就是小編為大家?guī)?lái)的C++中stringstream的用法和實(shí)例全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的非遞歸后序遍歷算法
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的非遞歸后序遍歷算法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10
C語(yǔ)言中pthread_exit()函數(shù)實(shí)現(xiàn)終止線(xiàn)程
本文主要介紹了C語(yǔ)言中pthread_exit()函數(shù)實(shí)現(xiàn)終止線(xiàn)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問(wèn)題
這篇文章主要介紹了C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11

