2011-02-08 8 views
1

可能性の重複:私は整数で01を示すことができた方法
How can I pad an int with leading zeros when using cout << operator?整数値問題

?私は文字列を整数に変換するたび

することは、私は常に1の代わりに、01値を得ることができる方法01.

を取得します。

+0

が01値での取得の使用何次完全なプログラムに示すように

std::cout << std::setfill('0') << std::setw(2) << 1; 

int?これとint演算の違いは何ですか? –

答えて

3

ので、あなたはそれをC++とタグ付けしましたが、C++のストリームでそれを行う方法は次のようになります:

#include <sstream> 
#include <iomanip> 
#include <iostream> 

int main() {  
    int value = 1; 
    std::stringstream ss; 
    ss.width(2); 
    ss << std::setfill('0') << value; 

    std::cout << ss.str() << std::endl; // displays '01' 
} 
0

次のギ指定ここで

printf("%02d\n",myInt); 

を使用し、printfのを使用している場合は、パーセンテージ後の0はゼロパディングを先頭と2を示す整数として2

0

のフィールド幅を示し、それ常に1になります。 01を表示するには、表示用に文字列に戻す必要があります。

あなたが書くことができフォーマッタを使用して値を表示する場合のprintfに

printf("%02d", x); 
1

integerタイプは、可能な最大整数値の範囲をカバーするために、すべてのメモリ(通常32または64ビット)を使用します。フォーマット/表示情報を追跡することはありません。その結果、32ビットの値でさえ40億の異なる値を追跡することができますが、画面上、ファイル内などに表示する必要があります。周囲のコードによって決定されなければならず、integerのプロパティではありません。したがって、整数がある場合は、表示するときに書式を選択することができます。これを行うにはさまざまな方法があります。最もC++の方法は、std::ostream<iomanip>ヘッダーを使用しています。これには、フィールドの幅と塗りつぶし/埋め込み文字の指定が含まれています。例については、http://www.cplusplus.com/reference/iostream/manipulators/setw/を参照してください。また、「参照」リンクに従って設定してください。 Cから継承された方法は...第一の二重引用符で囲まれた文字列の部分は、%がパッドに、0手段変換を導入し、2幅である「書式文字列」を、含ま

printf("%02d", n); 

...です、dは引数のリストの次の10進数/整数値を意味します。

2

の値をと混同しないようにしてください。が表示されます。

あなただけ使用することができます。

#include <iostream> 
#include <iomanip> 

int main() { 
    int x = 1; 
    std::cout << std::setfill('0') << std::setw(2) << x << std::endl; 
    return 0; 
} 

出力:

01