2012-05-21 44 views
15

Ok, tôi hơi xấu hổ khi hỏi một điều đơn giản nhưng vẫn vậy.Hiển thị tiến trình trong ứng dụng dòng lệnh

Tôi có ứng dụng tiện ích dòng lệnh và cần hiển thị tiến trình cho người dùng.

tôi có thể viết tiến vào cout, như thế này:

std::cout << "10%\n"; 
... 
std::cout << "20%\n"; 
... 
std::cout << "30%\n"; 

... nhưng kết quả là người dùng sẽ thấy:

some line printed before 
10% 
20% 
30% 
... 

... nhưng những gì tôi thực sự cần là tỷ lệ phần trăm mà được được cập nhật, như thế này lúc đầu:

some line printed before 
10% 
... 

... và sau khi update:

some line printed before 
20% 
... 

... và sau khi cập nhật thứ hai:

some line printed before 
30% 
... 

Làm thế nào tôi nên đạt được điều đó?

+3

Mặc dù các câu trả lời dưới đây là tốt, không thể nói chắc chắn những gì sẽ hoạt động, trừ khi bạn khai báo hệ điều hành mà chương trình của bạn chạy. –

+0

@AmigableClarkKant Tôi cần công việc đó trên cả Linux (Ubuntu) và Windows. –

+1

Tôi nghĩ rằng câu trả lời của Joachim Pileborgs sẽ làm việc tốt cho chúng. –

Trả lời

24

Thay vì sử dụng '\n', sử dụng '\r':

std::cout << "\r10%" << std::flush; 

In newline ('\n') khi hoàn tất.

Điều quan trọng là sử dụng std::flush để nội dung luồng thực sự là đầu ra.

6

Sử dụng phí vận chuyển.

std::cout << "\r10%"; 
std::cout << "\r20%"; 
... 

Chuyển đến đầu dòng.

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