2011-10-19 13 views
0

libvtemmというライブラリを使用していますが、libvtemmは関数write_contentsを使用しています。それは内部バッファをとり、それをGlib::RefPtr<Gio::OutputStream>オブジェクトに出力します。私は、Gio :: OutputStreamの内容をstd::stringなどに変換する方法を見つけようとしています。そのため、他のデータ構造内でデータを再生したり移動したりすることができます。Gio :: OutputStreamを文字列またはstd :: ostreamに変換する

誰でもstd::ostreamのようなものにGio::OutputStreamを構築するか、その内容がstd::stringに変換するいずれかの方法を知っていますか?

私にはGio::MemoryOutputStreamがあります。このようなデータは、std::ostreamにデータを取り込むのに便利ですか?

答えて

0

回答をお探しの方は、コンソールバッファーをstd::stringに読み込んでください。

// Create a mock stream just for this example 
Glib::RefPtr<Gio::MemoryOutputStream> bufStream = 
    Gio::MemoryOutputStream::create(NULL, 0, &realloc, &free); 

// Create the stringstream to use as an ostream 
std::stringstream ss; 

// Get the stream size so we know how much to allocate 
gsize streamSize = bufStream->get_data_size(); 
char *charBuf = new char[streamSize+1]; 

// Copy over the data from the buffer to the charBuf 
memcpy(charBuf, bufStream->get_data(), streamSize); 

// Add the null terminator to the "string" 
charBuf[streamSize] = '\0'; 

// Create a string from it 
ss << charBuf; 

これは、今後同様の問題を抱える人に役立ちます。

関連する問題