NewProject Δημοσ. 22 Φεβρουαρίου 2011 Δημοσ. 22 Φεβρουαρίου 2011 Στον κωδικα μου εχω > std::cerr << "sth" << std::endl ; και αν τρεξω το προγραμμα , εστω 'a.exe' χωρις παραμετρους το 'sth' εμφανιζεται στη κονσολα ενω αν το τρεξω με 'a.exe 2> cerr.txt' το output ειναι παλι στη κονσολα και οχι στο αρχειο cerr.txt . Καμια συμβουλη ?
Evgenios1 Δημοσ. 22 Φεβρουαρίου 2011 Δημοσ. 22 Φεβρουαρίου 2011 http://www.cplusplus.com/reference/iostream/cerr/ By default, most systems have their standard error output set to the console, where text messages are shown, although this can generally be redirected.
parsifal Δημοσ. 22 Φεβρουαρίου 2011 Δημοσ. 22 Φεβρουαρίου 2011 Και με το παρακάτω minimal παράδειγμα παρατηρείς την ίδια συμπεριφορά; > #include <iostream> int main(int argc, char *argv[]) { std::cerr << "sth" << std::endl; return 0; }
NewProject Δημοσ. 22 Φεβρουαρίου 2011 Μέλος Δημοσ. 22 Φεβρουαρίου 2011 Και με το παρακάτω minimal παράδειγμα παρατηρείς την ίδια συμπεριφορά; > #include <iostream> int main(int argc, char *argv[]) { std::cerr << "sth" << std::endl; return 0; } ναι , την ιδια αλλα αν τα προγραμματα τα τρεξω απο το command prompt τρεχουν κανονικα (κανονικα==ετσι οπως θα επρεπε να τρεχουν δηλαδη).Οταν φτιαχνω συντομευσεις με παραμετρους , εχω το προβλημα
parsifal Δημοσ. 22 Φεβρουαρίου 2011 Δημοσ. 22 Φεβρουαρίου 2011 Windows 7 x64 εδώ, δε μπορώ να το αναπαράγω! Σίγουρα συμπληρώνεις σωστά το πεδίο "Target" στο shortcut που δημιουργείς; >C:\Windows\System32\cmd.exe /c C:\A_EXE_PATH\a.exe 2>cerr.txt
NewProject Δημοσ. 22 Φεβρουαρίου 2011 Μέλος Δημοσ. 22 Φεβρουαρίου 2011 > Target: "E:\Release\Demo.exe" 2>cerr.txt Win7x32
parsifal Δημοσ. 22 Φεβρουαρίου 2011 Δημοσ. 22 Φεβρουαρίου 2011 Τα I/O redirections τα χειρίζεται το εκάστοτε κέλυφος. Το standard κέλυφος στα Windows είναι το cmd.exe. Εσύ καλείς το πρόγραμμά σου χωρίς να μεσολαβεί κάποιο κέλυφος και υποπτεύομαι ότι το redirection που ορίζεις στο shortcut αγνοείται εντελώς.
NewProject Δημοσ. 22 Φεβρουαρίου 2011 Μέλος Δημοσ. 22 Φεβρουαρίου 2011 Τα I/O redirections τα χειρίζεται το εκάστοτε κέλυφος. Το standard κέλυφος στα Windows είναι το cmd.exe. Εσύ καλείς το πρόγραμμά σου χωρίς να μεσολαβεί κάποιο κέλυφος και υποπτεύομαι ότι το redirection που ορίζεις στο shortcut αγνοείται εντελώς. ωραια , ευχαριστω . Τελικα απλα εφτιαξα ενα .bat
dop Δημοσ. 7 Μαρτίου 2011 Δημοσ. 7 Μαρτίου 2011 Μέσα από το πρόγραμμά σου, γίνεται με τον εξής κώδικα (πριν τελειώσει το πρόγραμμα το ξανακάνω tie στο παλιό stream σε περίπτωση που το C++ runtime θέλει να γράψει κάτι. > #include <iostream> #include <fstream> int main() { std::cerr << "sth" << std::endl; // to console std::ofstream f("err.txt"); std::streambuf* const old = std::cerr.rdbuf(f.rdbuf()); std::cerr << "sth else" << std::endl; // to err.txt std::cerr.rdbuf(old); std::cerr << "sth more" << std::endl; // to console return 0; }
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.