2012-09-18 38 views
8

Bir stringstream nesnesinin stringbuffer'ını pubsetbuf yöntemini kullanarak bir dize kopyalamak zorunda kalmadan değiştirmeye çalışıyorum ama çalışmıyor. http://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/'daki belgeleri takip ediyorum. İşte benim örnek kod:stringstream-> rdbuf() -> pubsetbuf arabellek ayarlamıyor

#include <iostream> 
#include <sstream> 

int main(int argc, char* argv[]) 
{ 
    std::stringstream stream("You say goodbye"); 
    char replace[] = {"And I say hello"}; 
    std::cout << stream.str() << std::endl; // Checking original contents 
    stream.rdbuf()->pubsetbuf(replace, 16); // Should set contents here 
    std::cout << stream.str() << std::endl; // But don't :(
    return 0; 
} 

Ve çıktısı:

You say goodbye 
You say goodbye 

ben stream.str (replace) kullanabilir biliyorum, ama bu yöntem kopya 'yerine' değeri, ve ben bir kopya çıkarmak istemiyorum.

Neyi eksik?

Güncelleme: Ben VS2010

+1

SO sadece gülünç hızlı arama gelen varsayılan kullanır? http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf –

+0

Eğer VS kullanıyorsanız, [bu soruya] bir göz atın (http://stackoverflow.com/q/10054396/416627) (ve cevap). Düşündüğün gibi çalışmıyor. Uygulama tanımlanmış ve sadece mantıklı olduğunda uygulanmaktadır. –

+0

Olası kopyası [Standart bir akış (pubsetbuf) tarafından kullanılan dahili arabelleğin ayarlanması] (http://stackoverflow.com/questions/1494182/setting-the-internal-buffer-used-by-a-standard-stream-pubsetbuf –

cevap

10

içeriklerini belirlesin Değil kullanıyorum. pubsetbuf aramalar

15 etkileri

basic_streambuf<charT,traits>* setbuf(charT* s, streamsize n); 
virtual setbuf: bu setbuf (0,0) dışında uygulama tanımlı bir etkisi yoktur.

16 İadeler: bu. Bu sorunla karşılaşan - basic_stringbuf sanal yöntemin setbuf hiçbir aşırı yük yoktur

VS 2010, bu basic_streambuf

virtual _Myt *__CLR_OR_THIS_CALL setbuf(_Elem *, streamsize) 
    { // offer buffer to external agent (do nothing) 
    return (this); 
    } 
+0

Teşekkürler. Belgedeki bu "özel uygulamalar", belirli satıcı uygulamalarına değil, somut sınıflara atıfta bulundu. Herhangi bir C++ derleyicide iyi çalışacağını farz ettim. –

İlgili konular