1
我正在尋找乾淨的STL方式來使用現有的C緩衝區(char *和size_t)作爲字符串流。我寧願使用STL類作爲基礎,因爲它具有內置的安全防護和錯誤處理。使用字符數組作爲字符串流緩衝區
注:我不能使用額外的庫(否則我會用QTextStream)
我正在尋找乾淨的STL方式來使用現有的C緩衝區(char *和size_t)作爲字符串流。我寧願使用STL類作爲基礎,因爲它具有內置的安全防護和錯誤處理。使用字符數組作爲字符串流緩衝區
注:我不能使用額外的庫(否則我會用QTextStream)
您可以std::stringbuf::pubsetbuf
嘗試。它調用setbuf
,但它的實現定義了它是否會起作用。如果是這樣,它會用char數組替換底層的字符串緩衝區,而不會複製像它通常那樣的所有內容。值得一試,IMO。
與此代碼測試:
std::istringstream strm;
char arr[] = "1234567890";
strm.rdbuf()->pubsetbuf(arr, sizeof(arr));
int i;
strm >> i;
std::cout << i;
你只是想初始化字符串流在通過P0W答案,或者你想在的意義上「使用」緩衝告訴stringstream使用它作爲它的* internal *緩衝區(所以,它會,例如,寫入新的信息)?我認爲後者對於STL來說是不可能的,因爲你不能控制的重新分配等。因此,STL可能不會提供一個接口來完成它。 – Oguk 2014-10-17 06:13:38