stringstream 簡單用法

2021-10-14 18:41:58 字數 1717 閱讀 6394

1 概述

定義了三個類:istringstream、ostringstream 和 stringstream,分別用來進行流的輸入、輸出和輸入輸出操作。本文以 stringstream 為主,介紹流的輸入和輸出操作。

主要用來進行資料型別轉換,由於 使用 string 物件來代替字元陣列(snprintf方式),就避免緩衝區溢位的危險;而且,因為傳入引數和目標物件的型別會被自動推導出來,所以不存在錯誤的格式化符的問題。簡單說,相比c庫的資料型別轉換而言, 更加安全、自動和直接。

2 **示例

2.1 資料型別轉換

這裡展示乙個**示例,該示例介紹了將 int 型別轉換為 string 型別的過程。示例**(stringstream_test1.cpp)如下:

#include

#include

#include

#include

using

namespace std;

intmain()

編譯並執行上述**,結果如下

2.2 多個字串拼接

本示例介紹在 stringstream 中存放多個字串,實現多個字串拼接的目的(其實完全可以使用 string 類實現),同時,介紹 stringstream 的清空方法。

示例**(stringstream_test2.cpp)如下:

#include

#include

#include

using

namespace std;

intmain()

編譯並執行上述**,結果如下:

從上述**執行結果能夠知道:

可以使用 str() 方法,將 stringstream 型別轉換為 string 型別;

可以將多個字串放入 stringstream 中,實現字串的拼接目的;

如果想清空 stringstream,必須使用 sstream.str(""); 方式;clear() 方法適用於進行多次資料型別轉換的場景。詳見示例2.3。

2.3 stringstream的清空

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

#include

#include

using

namespace std;

intmain()

編譯並執行上述**,結果如下:

注意:在本示例涉及的場景下(多次資料型別轉換),必須使用 clear() 方法清空 stringstream,不使用 clear() 方法或使用 str("") 方法,都不能得到資料型別轉換的正確結果。下圖分別是未使用 clear() 方法、使用 str("") 方法時的執行結果:

stringstream 的簡單用法

為什麼要學習 如果你已習慣了風格的轉換,也許你首先會問 為什麼要花額外的精力來學習基於的型別轉換呢?也許對下面乙個簡單的例子的回顧能夠說服你。假設你想用sprintf 函式將乙個變數從int型別轉換到字串型別。為了正確地完成這個任務,你必須確保證目標緩衝區有足夠大空間以容納轉換完的字串。此外,還必須...

stringstream簡單用法 解釋

原文 簡單用法 string s stringstream ss ss 2 ss s 將int轉換為string ss.clear 使用stringstream來做轉換時,最好使用完,進行ss.clear 操作 1 istringstream類用於執行c 風格的串流的輸入操作。它的作用是從strin...

BroadcastReciever簡單用法示例

生命週期非常短,在接受到廣播時建立,onrecieve 方法執行完後銷毀 10s內onrecieve 方法未執行完,會出現anr錯誤 broadcastreciever簡單用法示例 傳送廣播 intent intent new intent this,sendbraodcast intent 注 1...