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
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 –
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. –
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 –