欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ stringstream類(lèi)用法詳解

 更新時(shí)間:2021年08月13日 15:07:26   作者:liitdar  
這篇文章主要介紹了C++ stringstream類(lèi)用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

本文主要介紹 C++ 中 stringstream 類(lèi)的常見(jiàn)用法。

1 概述

<sstream> 定義了三個(gè)類(lèi):istringstream、ostringstream 和 stringstream,分別用來(lái)進(jìn)行流的輸入、輸出和輸入輸出操作。本文以 stringstream 為主,介紹流的輸入和輸出操作。

<sstream> 主要用來(lái)進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換,由于 <sstream> 使用 string 對(duì)象來(lái)代替字符數(shù)組(snprintf方式),就避免緩沖區(qū)溢出的危險(xiǎn);而且,因?yàn)閭魅雲(yún)?shù)和目標(biāo)對(duì)象的類(lèi)型會(huì)被自動(dòng)推導(dǎo)出來(lái),所以不存在錯(cuò)誤的格式化符的問(wèn)題。簡(jiǎn)單說(shuō),相比c庫(kù)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換而言,<sstream> 更加安全、自動(dòng)和直接。

2 代碼示例

2.1 數(shù)據(jù)類(lèi)型轉(zhuǎn)換

這里展示一個(gè)代碼示例,該示例介紹了將 int 類(lèi)型轉(zhuǎn)換為 string 類(lèi)型的過(guò)程。示例代碼(stringstream_test1.cpp)如下:

#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main()
{
    stringstream sstream;
    string strResult;
    int nValue = 1000;
 
    // 將int類(lèi)型的值放入輸入流中
    sstream << nValue;
    // 從sstream中抽取前面插入的int類(lèi)型的值,賦給string類(lèi)型
    sstream >> strResult;
 
    cout << "[cout]strResult is: " << strResult << endl;
    printf("[printf]strResult is: %s\n", strResult.c_str());
 
    return 0;
}

編譯并執(zhí)行上述代碼,結(jié)果如下:

2.2 多個(gè)字符串拼接

本示例介紹在 stringstream 中存放多個(gè)字符串,實(shí)現(xiàn)多個(gè)字符串拼接的目的(其實(shí)完全可以使用 string 類(lèi)實(shí)現(xiàn)),同時(shí),介紹 stringstream 的清空方法。

示例代碼(stringstream_test2.cpp)如下:

#include <string>
#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
    stringstream sstream;
 
    // 將多個(gè)字符串放入 sstream 中
    sstream << "first" << " " << "string,";
    sstream << " second string";
    cout << "strResult is: " << sstream.str() << endl;
 
    // 清空 sstream
    sstream.str("");
    sstream << "third string";
    cout << "After clear, strResult is: " << sstream.str() << endl;
 
    return 0;
}

編譯并執(zhí)行上述代碼,結(jié)果如下:

從上述代碼執(zhí)行結(jié)果能夠知道:

  • 可以使用 str() 方法,將 stringstream 類(lèi)型轉(zhuǎn)換為 string 類(lèi)型;
  • 可以將多個(gè)字符串放入 stringstream 中,實(shí)現(xiàn)字符串的拼接目的;
  • 如果想清空 stringstream,必須使用 sstream.str(""); 方式;clear() 方法適用于進(jìn)行多次數(shù)據(jù)類(lèi)型轉(zhuǎn)換的場(chǎng)景。詳見(jiàn)示例2.3。

2.3 stringstream的清空

清空 stringstream 有兩種方法:clear() 方法以及 str("") 方法,這兩種方法有不同的使用場(chǎng)景。str("") 方法的使用場(chǎng)景,在上面的示例中已經(jīng)介紹了,這里介紹 clear() 方法的使用場(chǎng)景。示例代碼(stringstream_test3.cpp)如下:

#include <sstream>
#include <iostream>
 
using namespace std;
 
int main()
{
    stringstream sstream;
    int first, second;
 
    // 插入字符串
    sstream << "456";
    // 轉(zhuǎn)換為int類(lèi)型
    sstream >> first;
    cout << first << endl;
 
    // 在進(jìn)行多次類(lèi)型轉(zhuǎn)換前,必須先運(yùn)行clear()
    sstream.clear();
 
    // 插入bool值
    sstream << true;
    // 轉(zhuǎn)換為int類(lèi)型
    sstream >> second;
    cout << second << endl;
 
    return 0;
}

編譯并執(zhí)行上述代碼,結(jié)果如下:

注意:在本示例涉及的場(chǎng)景下(多次數(shù)據(jù)類(lèi)型轉(zhuǎn)換),必須使用 clear() 方法清空 stringstream,不使用 clear() 方法或使用 str("") 方法,都不能得到數(shù)據(jù)類(lèi)型轉(zhuǎn)換的正確結(jié)果。下圖分別是未使用 clear() 方法、使用 str("") 方法時(shí)的運(yùn)行結(jié)果:

到此這篇關(guān)于C++ stringstream類(lèi)用法詳解的文章就介紹到這了,更多相關(guān)C++ stringstream類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡(jiǎn)單總結(jié)C++中指針常量與常量指針的區(qū)別

    簡(jiǎn)單總結(jié)C++中指針常量與常量指針的區(qū)別

    這里我們來(lái)簡(jiǎn)單總結(jié)C++中指針常量與常量指針的區(qū)別,包括如何聲明和使用常量指針以及指針常量,需要的朋友可以參考下
    2016-06-06
  • C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)上篇

    C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)上篇

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C語(yǔ)言下快速排序(挖坑法)詳解

    C語(yǔ)言下快速排序(挖坑法)詳解

    大家好,本篇文章主要講的是C語(yǔ)言下快速排序(挖坑法)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++中取余運(yùn)算的實(shí)現(xiàn)

    C++中取余運(yùn)算的實(shí)現(xiàn)

    這篇文章主要介紹了C++中取余運(yùn)算的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 簡(jiǎn)單介紹C++中變量的引用

    簡(jiǎn)單介紹C++中變量的引用

    這篇文章主要簡(jiǎn)單介紹了C++中變量的引用,是C++入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • c語(yǔ)言snprintf函數(shù)的用法詳解

    c語(yǔ)言snprintf函數(shù)的用法詳解

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言snprintf函數(shù)用法的相關(guān)資料,snprintf()函數(shù)用于將格式化的數(shù)據(jù)寫(xiě)入字符串,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • C語(yǔ)言實(shí)現(xiàn)求解最小公倍數(shù)的算法示例

    C語(yǔ)言實(shí)現(xiàn)求解最小公倍數(shù)的算法示例

    這篇文章主要為大家介紹了C語(yǔ)言如何實(shí)現(xiàn)求解任意兩個(gè)正整數(shù)的最小公倍數(shù),文中采用了窮舉法和定理法。感興趣的小伙伴快來(lái)跟隨小編一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Qt使用QCustomPlot的實(shí)現(xiàn)示例

    Qt使用QCustomPlot的實(shí)現(xiàn)示例

    QCustomPlot是一個(gè)基于Qt C++的圖形庫(kù),用于繪制和數(shù)據(jù)可視化,并為實(shí)時(shí)可視化應(yīng)用程序提供高性能服務(wù),本文主要介紹了Qt使用QCustomPlot的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-01-01
  • C++數(shù)據(jù)結(jié)構(gòu)關(guān)于棧迷宮求解示例

    C++數(shù)據(jù)結(jié)構(gòu)關(guān)于棧迷宮求解示例

    這篇文章主要為大家介紹了C++數(shù)據(jù)結(jié)構(gòu)關(guān)于棧的迷宮求解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)貪吃蛇游戲

    C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評(píng)論