2017-07-27 1 views
-1

私のプログラムの結果を画面に印刷すると、データはすべての場所に表示されますが、結果を可能な限り最良に整列させたいのです。私はこれを行うにはsetw(10)を使用していますが、誰かが私を助けることができますが正しく動作していないのですか?これは私の印刷機能である出力データをきれいに整形するC++

enter image description here

void Print(const call_record *call_DB, int & count) 
{ 

    cout << fixed << showpoint << setprecision(2); 
    for(int i= 0; i <= count; i++) 
    { 
     cout << call_DB[i].firstname <<" " << call_DB[i].lastname <<" " << call_DB[i].cell_number <<setw(15) << call_DB[i].relays <<setw(10) << call_DB[i].call_length; 
     cout <<setw(10) << call_DB[i].net_cost <<setw(10) << call_DB[i].call_rate << setw(10) << call_DB[i].call_tax <<setw(10) << call_DB[i].total_cost; 

     cout << endl; 


    } 
} 
+0

[こちら](https://stackoverflow.com/questions/6755250/format-output-in-a-table-c)をご覧ください。 –

答えて

1

あなたは、もちろん、またの幅を設定する必要があります

おかげ

これは、出力は次のようになります文字列(または結合された名前)の出力:

cout << std::setw(20) << (call_DB[i].firstname + call_DB[i].lastname); 

(これらは、がそれらを連結するようにstd::stringであると仮定する)。

1

私がC++の出力で知っているベストプラクティスの1つは、テンプレート関数を使用することです。

サンプル

あなたのテンプレート関数:

それを使用して
template<typename T> void coutElement(T t, const int& width) 
{ 
    cout << std::left << setw(width) << setfill(separator) << t; 
} 

const int name_width = 10; //non sense value 
const int num_width = 10; //non sense value 
coutElement("Dainer", name_width); 
coutElement("Doe", name_width); 
coutElement(250, num_width); 

これは常に完璧に働いている、それについての唯一のやりがいの事がありますの値のために取る決定およびnum_width

+1

「左」とは何ですか? – Walter

+0

申し訳ありませんが、私は私のプロジェクトからコピーしたコードを編集しませんでした。ありがとう。 –

+1

私はそのstd :: leftを仮定します – pm100

関連する問題