2011-01-04 33 views
6

Chào buổi sáng,Không có đầu ra bàn điều khiển trên cout

Tôi gặp vấn đề với IDE Eclipse cho nhà phát triển C/C++.

Tôi đang viết một công cụ smal để chuyển đổi Chuỗi. Trong khi kiểm tra trên một số điểm nhật thực dừng lại để cung cấp cho đầu ra bàn điều khiển. ví dụ:
cout<<"test";
không được hiển thị.

Nhưng nó không phải mọi nơi ... một ví dụ khác:

// File path as argument 
int main(int argc, char* argv[]) { 
if (argc != 2) { 
    cout 
      << "ERROR: Wrong amount of arguments! Only one allowed...\n"; 
    cout << "\n" << "Programm closed...\n\n"; 
    exit(1); 
} 

CommandConverter a(argv[1]); 
cout<<"test"; 
a.getCommandsFromCSV(); 
cout<<"test2"; 

return 0; 
} 

Các thông báo lỗi sẽ được hiển thị một cách chính xác nếu đối số là mất tích. Nhưng nếu đối số là ở đó và chương trình tiếp tục đầu ra kiểm tra:

cout<<"test";
cout<<"test2";

không được hiển thị ...
tôi đang thiếu một cái gì đó rõ ràng?

Cảm ơn trước!

+0

Tôi chưa sử dụng Eclipse, nhưng bạn có chắc chắn rằng mã của bạn đang hoạt động tốt. Nếu tình cờ, nó bị treo ở dòng 'CommandConverter a (argv [1]);', và bạn không được thông báo về sự cố, bạn sẽ không thấy bất kỳ đầu ra nào. –

+0

điều gì sẽ xảy ra nếu bạn chạy trên dòng lệnh? – Nim

+0

Tôi đang chạy nó atm chỉ trên commandline ... nhưng làm điều này thông qua eclipse console ... nên được cùng phải không? - Mã không sụp đổ ở đó ... nó làm rất nhiều sau này ... để phân tích thêm tôi cần phải đặt ra. Nếu tôi gỡ lỗi và vượt qua điểm đó, không có gì được hiển thị:/ – Beasly

Trả lời

11

Bạn cần phải kết thúc chuỗi đầu ra bằng dòng mới, ví dụ: `cout < <" test \ n "` `. Lý do là đầu ra tiêu chuẩn được đệm và bộ đệm được xóa trên dòng mới. Có lẽ tồn tại một cách để tuôn ra bộ đệm cout mà không cần xuất một dòng mới, nhưng tôi không biết nó bằng trái tim. Có lẽ bao gồm quyền truy cập vào streambuf cơ bản (thông qua phương thức rdbuf).

+11

Tốt hơn chưa sử dụng 'endl' – ismail

+0

Tôi chỉ thử nó ... cùng một hành vi: ( – Beasly

+5

bạn đã thử với std :: endl như Ismail nói? Đó là thực sự nghĩa vụ phải fluch bộ đệm đầu ra '\ n' là không. – stijn

1

Tôi gặp sự cố tương tự. Trong trường hợp của tôi chương trình sẽ cung cấp cho đầu ra nếu chạy từ dòng lệnh nhưng không phải từ eclipse console. Giải pháp là sử dụng phiên bản 32 bit của nhật thực và không phải là phiên bản 64 bit.

Tôi đọc rằng đó là lỗi. Có thể không phải là vấn đề tương tự.

-3

thử xuất ra một không gian vào lúc bắt đầu của mỗi dòng

cout < < "" < < .....

+1

Lập trình giáo phái hàng hóa FTW! – sbk

3

Đối với tôi cài đặt các phiên bản 32 bit của Eclipse (Indigo 3.7) và 32 bit Java JDK/JRE không hoạt động. Tôi sử dụng giải pháp nhanh hơn nhiều từ Eclipse CDT/User/FAQ:

Trích từ Eclipse CDT/User/FAQ - Eclipse console does not show output on Windows:

Eclipse console does not show output on Windows In Eclipse CDT on Windows, standard output of the program being run or debugged is fully buffered, because it is not connected to a Windwos console, but to a pipe. See bug 173732 for more details. Either add fflush calls after every printf or add the following lines in the start of the main function:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0); 
+0

Cách giải quyết Windows này cũng hoạt động đối với Eclipse 3.8 64 bit với CDT 6.0 trên Ubuntu 12,10 64 bit. – Lucas

0

Tôi cũng đang tìm kiếm chính xác thông tin này khi Tôi thấy điều này trên trang web của Microsoft http://support.microsoft.com/kb/94227

tôi nghĩ rằng một phương pháp đơn giản là sử dụng std :: tuôn ra khi bạn muốn để buộc đỏ bừng bộ đệm nội bộ mà cout sử dụng

*std::cout << ... << std::flush;* 
0

Điều này xảy ra khi bạn gỡ lỗi mã của bạn và không thấy đầu ra cho đến cuối cùng. sử dụng

cout<<"what ever overloads"<< flush; 

để xem kết quả ngay lập tức trên stdout (console)

-1

Hi sau một cuộc đấu tranh tương tự như tôi đã tìm ra, đó là yếu tố đầu tiên của thuộc tính của dự án biến PATH môi trường phải là "C: \ MinGW \ bin; " Nếu không một phiên bản sai có thể được sử dụng, đặc biệt là nếu bạn sử dụng trình biên dịch khác nhau.

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