2011-08-28 28 views
6

Aktarımı argüman olarak alan çok fazla işlevi olan bir C++ kodum var. Bu işlevleri test etmek istedim, çünkü fonksiyona uygulandıktan sonra obje nesne verilerini doğrulamak zorundayım. Çıktı akışını bir dosyaya yönlendirebilirim ancak geçici bir tampon oluşturabilir ve çıktı akışını arabelleğe yönlendirip bu arabellekten okuyabiliyor mu diye kontrol etmek istedim.Ostream nesnesini geçici bir arabelleğe nasıl yönlendirilir?

cevap

15

Hafızanın std::ostream bir şekilde std::stringstream kullanabilirsiniz:

#include <iosfwd> 
#include <sstream> 
#include <cassert> 

void my_func(std::ostream& out) { 
    out << "test"; 
} 

int main() { 
    std::ostringstream buf; 
    my_func(buf); 
    assert(buf.str() == "test"); 
} 
+0

Ve eğer bir floş sonra 'buf' yeniden kullanmak istiyorsanız, buf.str ("")' ile sıfırlayabilir; buf.clear() ' –

İlgili konular