2013-07-26 245 views

Trả lời

2

Các ostream mặc định được sử dụng bởi std :: cout và stdio (như printf) là thiết bị xuất chuẩn, nhưng nó không nhất thiết phải như vậy.

Đầu ra có thể được chuyển hướng đến đích khác. Tham chiếu này: http://www.tldp.org/LDP/abs/html/io-redirection.html

+0

Điều đó có nghĩa là tôi có thể xuất ra máy in như thiết bị sử dụng cout. Nếu có thể, bạn có thể đề nghị cách. –

+0

@pranitkothari Có. Điều là để có được mô tả tập tin thiết bị và chuyển hướng cout (với một bộ mô tả tập tin 1) cho nó. Bạn có thể làm điều đó trong dòng lệnh. Liên kết trên có thể cung cấp cho bạn một số đầu mối. – lulyon

0

mỗi cppreference:

Sets whether the standard C++ streams are synchronized to 
the standard C streams after each input/output operation. 
8

Nếu đồng bộ hóa tắt, luồng C++ sẽ nhanh hơn trong một số trường hợp.

Theo mặc định, tất cả các luồng C++ chuẩn được đồng bộ hóa với luồng C tương ứng.

Ví dụ:

#include <iostream> 
#include <cstdio> 
using namespace std; 
int main() 
{ 
    cout.sync_with_stdio(false); 
    cout << "Hello\n"; 
    printf("World\n"); 
    cout << "...\n"; 
} 

Output:

Hello 
... 
World 

Thay đổi nó để true cho kết quả mặc định theo thứ tự. Đầu ra:

Hello 
World 
... 
+0

@POW Vì vậy, tôi có thể rút ra kết luận, nếu không đồng bộ, cout/printf không thể đảm bảo trật tự hoặc thậm chí không thể đảm bảo mọi thứ đang được in? –

+0

@pranitkothari không nhất thiết, một 'endl' sẽ thay đổi kịch bản ngay cả khi đồng bộ hóa tắt – P0W

+0

@POW chắc chắn, nhưng những gì về mà không có endl tôi yêu cầu. Tôi biết bộ đệm tuôn ra. Nhưng những gì không có. –