2014-11-29 12 views
7

Mã này là đơn giảnTại sao Qt Creator thêm một dòng mới sau khi cout.flush() gọi?

#include <iostream> 
#include <unistd.h> 
using namespace std; 

int main() 
{ 
    for(int i = 0; i < 3; ++i) 
    { 
     cout << "1 "; cout.flush(); 
     sleep(1); 
    } 
} 

trong khi trong file .pro

QT += core  
TARGET = ProjectName  
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  
TEMPLATE = app 

Nếu đầu ra đi vào Qt Creator "đầu ra ứng dụng" (nơi dưới chỗ mã nguồn theo mặc định), mỗi "1 "bắt đầu từ một dòng mới.

Nếu tôi biên dịch và thực thi tệp * .cpp riêng biệt trong Thiết bị đầu cuối Ubuntu bằng g ++, nó hoạt động theo cách phù hợp.

Nếu tôi tạo một dự án mới trong Qt Creator và đầu ra đi vào giao diện điều khiển Qt Creator (cửa sổ mới với nền đen), nó hoạt động theo cách phù hợp.

Vâng, tại sao cout.flush() gây ra một dòng mới trong trường hợp đầu tiên?

Trả lời

6

Rõ ràng, đây là một Qt Creator lỗi rằng họ không có kế hoạch để giải quyết bất cứ lúc nào sớm (ít nhất đó là nhà nước trong tháng Tư, 2015). Tôi đã thử nghiệm Qt Creator 3.5.1 (Qt 5.5.1) và lỗi vẫn tồn tại, mặc dù dòng mới chỉ được in sau cuộc gọi std::cout.flush() đầu tiên hoặc thêm std::flush thao tác vào cuộc gọi std::cout <<.

Anyways, JIRA vé cho lỗi này có thể được tìm thấy ở đây:

Flushing application output automatically starts a new line

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