Đồng thời bạn phát ra dòng đầu tiên,
Artist Title Price Genre Disc Sale Tax Cash
để đạt được "sắp xếp", bạn phải biết "trước" làm thế nào rộng mỗi cột sẽ cần phải được (nếu không, sự liên kết là không thể) . Khi bạn làm biết chiều rộng cần thiết cho mỗi cột (có một số cách có thể để đạt được điều đó tùy thuộc vào nơi dữ liệu của bạn đến), sau đó chức năng setw
được đề cập trong câu trả lời khác sẽ giúp hoặc (nhiều hơn); có thể phát ra số lượng không gian được tính toán cẩn thận (chắc chắn, chắc chắn), v.v. Tôi không đề xuất các tab vì bạn không có quyền kiểm soát thực tế về cách thiết bị đầu ra cuối cùng sẽ hiển thị các tab đó, nói chung.
Quay lại vấn đề cốt lõi, nếu bạn có giá trị của mỗi cột trong một số vector<T>
của một số loại, ví dụ, bạn có thể thực hiện định dạng đầu tiên để xác định chiều rộng tối đa của cột, ví dụ tài khoản chiều rộng của tiêu đề cho cột, quá, tất nhiên).
Nếu hàng của bạn đến "từng người một" và căn chỉnh là rất quan trọng, bạn sẽ phải lưu bộ nhớ cache hoặc đệm các hàng khi chúng đến (trong bộ nhớ nếu chúng phù hợp, nếu không trên một tệp đĩa mà bạn sẽ sau đó "tua lại" và đọc lại từ đầu), cẩn thận cập nhật vectơ "chiều rộng tối đa của mỗi cột" khi các hàng đến. Bạn không thể xuất ra bất kỳ thứ gì (thậm chí không phải là tiêu đề!), Nếu giữ liên kết là rất quan trọng, cho đến khi bạn thấy hàng cuối cùng (trừ khi bạn bằng cách nào đó có kiến thức trước về chiều rộng của cột, dĩ nhiên ;-).
Nguồn
2010-03-21 04:57:50
Các câu trả lời dưới đây cho phép xác định chiều rộng của cột. Lưu ý rằng điều này yêu cầu bạn biết một giới hạn trên (ví dụ ràng buộc cơ sở dữ liệu) hoặc tính toán trước nó (có thể có nghĩa là phân tích toàn bộ cấu trúc trước khi bắt đầu in nó). Thứ hai, mặc dù cần thiết, chậm hơn tất nhiên :) –