2011-07-19 9 views

答えて

5

あなたはのC#の例と非常によく似た何かをすることはできません。

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

同様:

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

は、ここで私はこれを行うために使用する基準です:http://www.cplusplus.com/reference/clibrary/cstdio/printf/

+2

表形式の出力では、C言語のprintfがダウンしてC++恐ろしいI/Oの手を打ちます。 –

+1

@DavidHammenしかし、フォーマットが小さすぎるとどうなりますか? – Walter

+0

@Walterこれは間違いなく問題です。アンダーフローを修正するために埋め込むことはできますが、オーバーフローを処理するには、すべてのロジックとポリシーを「感覚的に」包む必要があります。 (オーバーフローから最寄りの区切り文字に戻って、区切り文字の区切りに戻って、大文字小文字を区別して、一行ごとの書式設定を心配してください。)それは比較的簡単な問題ですが、無関係のプロジェクトで審美的な磨きをしています。 –

7

ここiomanipが持っているものの小さなサンプルです:

#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; 
} 

浮動小数点数の精度を設定するようにあなたが同様に行うことができます他のものがありますが、 setwを使用しているときにパディングとして使用されている文字を変更したり、基数10以外の数値を出力したりします。

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

0

列の値の長さを確認し、フォーマットすることを念頭に置きましょう。

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

MySQLシェルインターフェイスがどのように設計されているかを確認すると、良いアイデアが得られます。

2

好きなものが見つかりませんでした。ここでは、その出力のexmapleだhttps://github.com/haarcuba/text-table

でそれを探す:

+------+------+----+ 
|  |Sex | Age| 
+------+------+----+ 
|Moses |male |4556| 
+------+------+----+ 
|Jesus |male |2016| 
+------+------+----+ 
|Debora|female|3001| 
+------+------+----+ 
|Bob |male | 25| 
+------+------+----+ 
関連する問題