首頁 >後端開發 >C++ >如何使用 C 中的 Stringstream 高效寫入特定緩衝區?

如何使用 C 中的 Stringstream 高效寫入特定緩衝區?

Barbara Streisand
Barbara Streisand原創
2024-11-26 08:02:08239瀏覽

How Can I Efficiently Write to a Specific Buffer Using a Stringstream in C  ?

配置流以寫入特定緩衝區

使用stringstream 類別將資料寫入現有緩衝區時,重要的是要避免過多複製。預設機制涉及將訊息從流複製到臨時字串對象,這可能效率低。

原始方法及其局限性

最初進行了嘗試使用 rdbuf()->pubsetbuf() 方法將流輸出重定向到所需的緩衝區。然而,這種方法在 Visual Studio 2008 實作中被證明是無效的。

自訂 Streambuf 實作

一個可行的替代方案是建立一個自訂 std::streambuf類別來初始化其引用提供的緩衝區的內部指標:

template <typename char_type>
struct ostreambuf : public std::basic_streambuf<char_type, std::char_traits<char_type>>
{
    ostreambuf(char_type* buffer, std::streamsize bufferLength)
    {
        setp(buffer, buffer + bufferLength);
    }
};

修訂後的程式碼使用自訂Streambuf

使用自訂的ostreambuf類型,程式碼重寫如下:

void FillBuffer(char* buffer, unsigned int size)
{
    ostreambuf<char> ostreamBuffer(buffer, size);
    std::ostream messageStream(&ostreamBuffer);

    messageStream << "Hello" << std::endl;
    messageStream << "World!" << std::endl;
}

現在,資料直接寫入外部緩衝區,無需進行不必要的複製。這種方法在使用緩衝區時提供了更高的效率和靈活性。

以上是如何使用 C 中的 Stringstream 高效寫入特定緩衝區?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn