2011-10-11 36 views
10

Có ai biết nếu có một mẹo để chuyển đổi tất cả các chức năng cout << để không in ra đầu ra hiển thị? Tôi đang cố gắng để hack cùng một số mã được viết bởi tôi và một số người khác để đặt cùng một bản demo. Tôi không muốn chuyển hướng đầu ra đến một tập tin và muốn một giải pháp có một số biện pháp tương thích giữa Windows và Linux.Lập trình bỏ qua Cout

Trong trường hợp của tôi, tôi có nhiều dòng mã với nhiều điều khiển khác nhau khi tạo ra kết quả gỡ lỗi. Tôi muốn gọi một cái gì đó như:

cout.off(); 
driverForAffectA(); 
driverForAffectB(); 
cout.on(); 
printSpecializedDebug(); 
exit(0); 
+0

Vâng, bạn luôn có thể chuyển hướng đầu ra của mình tới tệp hoặc dev/null! – AraK

Trả lời

16

Bạn có thể thay đổi bộ đệm luồng của cout.

streambuf *old = cout.rdbuf(); 
cout.rdbuf(0); 
cout << "Hidden text!\n"; 
cout.rdbuf(old); 
cout << "Visible text!\n"; 

Edit:

Nhờ bình luận John độ phẳng bạn có thể rút ngắn mã một chút:

streambuf *old = cout.rdbuf(0); 
cout << "Hidden text!\n"; 
cout.rdbuf(old); 
cout << "Visible text!\n"; 
+4

Thậm chí tốt hơn, 'rdbuf (streambuf *)' trả về bộ đệm cũ, vì vậy bạn thậm chí không cần các cuộc gọi riêng biệt để có được cái cũ và đặt một cái mới. –

+0

@John Flatness: Oh cảm ơn tôi đã không nhận thấy điều đó trong tài liệu. Đã sửa câu trả lời của tôi. – GWW

1

Tại sao chính xác sao bạn không muốn chuyển hướng đầu ra? Nếu đó là vì có kết quả khác mà bạn muốn giữ lại, bạn có thể không may mắn.

Nếu nó chỉ là do đó bạn không cần phải gõ một biểu thức vỏ phức tạp trên một thiết bị đầu cuối trong một bản demo, tôi đề nghị làm một kịch bản bắt đầu và làm chuyển hướng bên trong.

Điều đó hoặc mở lại chế độ xem thành /dev/null ở đâu đó gần đầu chính.

Các vấn đề liên quan