2011-07-19 55 views

Trả lời

5

bạn không thể làm điều gì đó rất giống với C# ví dụ về:

String.Format("|{0,5}|{1,5}|{2,5}|{3,5}|", arg0, arg1, arg2, arg3); 

Giống như:

printf("|%5s|%5s|%5s|%5s|", arg0, arg1, arg2, arg3); 

Dưới đây là một tài liệu tham khảo tôi đã sử dụng để làm điều này: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

+2

Đối với đầu ra bảng, printf C của nhịp đập C++ tôi khủng khiếp/O tay xuống. –

+1

@DavidHammen Nhưng nếu định dạng quá nhỏ thì sao? – Walter

+0

@Walter Điều này chắc chắn là vấn đề - bạn có thể chỉ cần pad để sửa chữa một dòng chảy, nhưng để xử lý tràn, bạn cần tất cả các logic và chính sách để bọc 'hợp lý'. (Backtrack từ overflow đến delimiter gần nhất, rơi trở lại un-delimited gói cho các trường hợp cạnh, và * sau đó * lo lắng về mỗi dòng định dạng.) Đó là một vấn đề tương đối đơn giản trên riêng của nó, nhưng có lẽ nhiều công việc hơn nó có giá trị nếu bạn đang làm nó cho việc đánh bóng thẩm mỹ trên một dự án không liên quan. –

7

Đây là một mẫu nhỏ của những gì iomanip có:

#include <iostream> 
#include <iomanip> 

int main(int argc, char** argv) { 
    std::cout << std::setw(20) << std::right << "Hi there!" << std::endl; 
    std::cout << std::setw(20) << std::right << "shorter" << std::endl; 
    return 0; 
} 

Có những thứ khác bạn có thể làm là tốt, như thiết lập độ chính xác của số dấu chấm động , thay đổi các ký tự được sử dụng như padding khi sử dụng setw, outputting số trong một cái gì đó khác hơn là cơ sở 10, và vv.

http://cplusplus.com/reference/iostream/manipulators/

0

Kiểm tra độ dài giá trị cột và cũng giữ độ dài o giá trị f trong tâm trí để định dạng.

printf(" %-4s| %-10s| %-5s|\n", "ID", "NAME", "AGE"); 

Xem cách giao diện trình bao MySQL được thiết kế, nó sẽ cung cấp cho bạn ý tưởng hay.

2

Tôi không thể tìm thấy thứ mình thích, vì vậy tôi đã tạo một cái. Tìm nó ở https://github.com/haarcuba/text-table

Dưới đây là một exmaple sản lượng của nó:

+------+------+----+ 
|  |Sex | Age| 
+------+------+----+ 
|Moses |male |4556| 
+------+------+----+ 
|Jesus |male |2016| 
+------+------+----+ 
|Debora|female|3001| 
+------+------+----+ 
|Bob |male | 25| 
+------+------+----+ 
Các vấn đề liên quan