2013-04-04 41 views
3

我正在調查std :: wostringstream以及如何正確使用它。我想知道是否有任何方法可以事先知道構造字符串的長度?我試圖搜索MSDN和http://en.cppreference.com/w/,最後谷歌的信息,但無法找到我正在尋找。在調用.str()之前是否可以知道std :: wostringstream的長度?

例如,如果我傳遞給函數wostringstream的基準,是有可能知道的功能如果流爲空,或者不是,是多久沒有通過調用名爲.str做一個副本()

回答

3

您可以使用tellp()成員函數,該函數返回相關流緩衝區的輸出位置指示符。例如:

#include <string> 
#include <sstream> 
#include <iostream> 

int main() 
{ 
    std::wostringstream oss; 
    oss << L"Hello" << " World!" << std::endl; 
    std::cout << oss.tellp(); 
} 

這是live example

+0

雖然這可能會工作,但它絕對不能保證。 – 2013-04-04 09:23:08

+0

@JamesKanze你能否詳細說明爲什麼它不能保證工作? – 2013-04-04 09:52:07

+0

@ChristianRau我會問相反的問題:你爲什麼認爲它應該起作用。 'wostream :: tellp()'返回一個'pos_type'(這是一個類類型);這會轉換爲'streamoff'(這是一個整數類型),但只要結果是連貫的,就沒有關於涉及哪種映射的指示。 (當然,這裏很難理解標準的要求,尤其是因爲它需要'P(O(p))== p',其中'P'是'pos_type','O'是'streamoff ','p'是'P'的一個實例,當然這顯然是不可能的,因爲'P'需要保存更多的信息。) – 2013-04-04 11:14:47

相關問題