2010-07-17 16 views

cevap

18

Bunu yapmak için çeşitli yollar vardır. Komut satırından programname > out.txt ile yeniden yönlendirebilirsiniz. Ya da programınızın başında freopen("out.txt","w",stdout);'u kullanabilirsiniz.

+0

Bu benim için iyi çalışıyordu. Ama aniden, cmd konsol çıktıları tamamen görünmezdi. Bu hattı kaldırdığınızda, cmd çıkışlar tanımladığınız 'print' fonksiyon neredeyse hiçbir yararı vardır –

0

bir alt süreç oluşturmak ve çıkışını yönlendirmek istiyorsanız böyle bir şey yapabileceğini: Kendi süreçten yazmak istiyorsanız

FILE* filePtr = popen("mycmd"); 
FILE* outputPtr = fopen("myfile.txt"); 

if(filePtr && outputPtr) { 
    char tmp; 
    while((tmp = getc(filePtr)) != EOF) 
     putc(tmp, outputPtr); 

    pclose(filePtr); 
    fclose(outputPtr); 
} 
+0

sadece ilgili görülüyordu. . 'Eğer İlk örnek ve' filestream << "Bu yazdır" için;; Sen aynı kolaylıkla "Bu yazdır" << 'cout yazabilir print' bazı ekstra mantığı eklemek' sürece (ikinci örnekte" belki de bir zaman damgası yazma veya belki de standart çıktıya ve bir dosyaya yazılıyorsa), böyle bir işleve hiçbir yararı yoktur. – shoosh

1

, basit bir baskı yöntemi öneririm

void print(const string str, ostream & output) 
{ 
    output << str; 
} 

Sonra

print("Print this", cout); 
konsol çıkış için

veyaçağırabilir

ofstream filestream("filename.out"); 
print("Print this", filestream); 
dosya "Dosyaadı.OUT" içine yazmak için. print, ihtiyacınız olan tüm nesnelere ait bilgileri veren bir sınıf yöntemidir ve bu şekilde çıkışı farklı akışlara kolayca yönlendirebilirsiniz.

+2

... geri Pthreads ile –

0

bbtrb yazdı:

geçersiz baskı (const string str, ostream & çıkış) { çıkış < < str; Bundan daha iyisi}

hatta işlevi tarafından döndürülen manipüle çıkış akışı sahip olabileceği

ostream& output(ostream& out, string str) {out << str; return out;} 

yüzden tabii ki.

0

smerrimans cevabı size yardımcı olmalıdır.

Ayrıca kendi streambuf uygulamak ve bunun yerine avutmaya baskı dosya çıktıları depolamak için std :: cout ve std :: CERR ile kullanma seçeneği vardır. Bir süre önce çıktıları zaman damgalarıyla bir çeşit dönen günlüklere yönlendirmek için yaptım.

Sen nasıl çalıştığını ve this book beni doğru olsun nasıl yardım konuda biraz okumak gerekir. o değilse

ne ondan sonra olmana rağmen biraz zorlaştırır olduğunu. Ne sürecin

İlgili konular