2015-05-21 24 views
8

Verileri yazdırırken, tabloya benzeyen bir biçime yazdırılması gereken bir program var, ancak sayılar 2'den daha uzun olduğunda tablo kırılıyor. parametresi std::fmt numaralı telefondan biliyorum, ancak yapamıyorum kafamı al.Biçimlendirilmiş tablolar konsolda nasıl yazdırılır?

Akım çıkışı:

--------------------------------------- 
| total | blanks: | comments: | code: | 
--------------------------------------- 
| 0 | 0 | 0  | 0 | 
| 77 | 0 | 3  | 74 | 
| 112 | 0 | 6  | 106 | 
| 178 | 0 | 6  | 172 | 
| 218 | 0 | 7  | 211 | 
| 289 | 0 | 8  | 281 | 
| 380 | 0 | 9  | 371 | 
| 460 | 0 | 10  | 450 | 
| 535 | 0 | 11  | 524 | 
| 611 | 0 | 12  | 599 | 
| 692 | 0 | 14  | 678 | 
| 772 | 0 | 17  | 755 | 
| 873 | 0 | 18  | 855 | 
| 963 | 0 | 19  | 944 | 
| 1390 | 0 | 19  | 1371 | 
| 1808 | 0 | 19  | 1789 | 
| 2011 | 0 | 19  | 1992 | 
| 2259 | 0 | 19  | 2240 | 
| 2294 | 0 | 19  | 2275 | 
| 2349 | 0 | 19  | 2330 | 
| 2376 | 0 | 19  | 2357 | 
| 2430 | 0 | 19  | 2411 | 
| 2451 | 0 | 19  | 2432 | 
| 2515 | 13 | 19  | 2483 | 
| 2559 | 13 | 19  | 2527 | 
+0

deneyin ALAN yerine TAB kullanmak. 8 karakterden daha az sayılarla veya dizelerle düzgün çalışmalıdır. – Stephan

+1

Sekmeler kullanırsanız, uzunluğundan bağımsız olarak sütunları hizalayacak elastik tabstops'lar yapmak için bir sandık yazdım: https://github.com/BurntSushi/tabwriter – BurntSushi5

cevap

14

sözdizimi Python str.format sözdizimi gibidir. Bu:

fn main() { 
    println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 
     "total", "blanks", "comments", "code"); 
    println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 0, 0, 0, 0); 
    println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 77, 0, 3, 74); 
    println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 112, 0, 6, 106); 
    println!("{0: <10} | {1: <10} | {2: <10} | {3: <10}", 460, 0, 10, 1371); 
} 

şu çıktıyı üretir:

total  | blanks  | comments | code  
0   | 0   | 0   | 0   
77   | 0   | 3   | 74   
112  | 0   | 6   | 106  
460  | 0   | 10   | 1371 

rust playground