stringstream的乙個空格引起的錯誤

2021-05-25 06:19:12 字數 869 閱讀 5973

//#include "stdafx.h"

#include #include #include using namespace std;

int _tmain(int argc, _tchar* argv)

這段**的意思是用ostringstream儲存乙個string,它的內容可能來自文字,本例中是這樣的

val1: 512/nval2: 1024

然後打算把它輸出,用意是取出512和1024這兩個數值。具體的作法是用format_message.str()取出string型別的值然後用它來構造乙個istringstream,再由這個istringstream輸入到val1和val2中(其過程是交換了這兩個值),使它們獲得新的值。

【問題描述】

發現dump裡的值是val1:512,而val1和val2的值並沒有交換

【分析過程】

設定斷點後debug,發現dump第一次讀取的值就是val1:512,這說明istringstream並沒有把val1和512區分開來。

考慮istringstream區分string的標記大致有 空格、回車、製表 等,再看我的程式

format_message << "va1:"

<< val1 << "/n" 。。。。。。。

這裡的 "va1:" 沒有空格

【修改】

format_message << "va1: " << val1 << "/n" << "val2: " << val2 << "/n";

【思考】

這樣看來dump第一次接收的值是val1:512,然後val1接收val2: 1024,此時由於型別不是匹配,接收失敗,接下來dump和val2都沒有可以接收的內容,所以val1和val2的值並沒有交換

C (一) stringstream的用法

輸入輸出的標頭檔案 string流的標頭檔案 檔案流的標頭檔案 1.利用輸入輸出做資料轉換 ss stream i 將int輸入流中 ss stream str 將ss stream中的數值輸出到str中 注意 如果做多次資料轉換 必須呼叫clear 來設定轉換模式 ss stream 456 ss...

關於stringstream的一些總結

c 標準庫中的提供了比ansi c的更高階的一些功能,即單純性 型別安全和可擴充套件性。可以使用這些庫來實現安全和自動的型別轉換。如果你已習慣了風格的轉換,也許你首先會問 為什麼要花額外的精力來學習基於的型別轉換呢?也許對下面乙個簡單的例子的回顧能夠說服你。假設你想用sprintf 函式將乙個變數從...

stringstream物件的使用

識別每行中的單詞 include include include using namespace std int main string line,word will hold a line and word from input respectively while getline cin,lin...