C++
std :: iomanip
サーチ…
std :: setw
int val = 10;
// val will be printed to the extreme left end of the output console:
std::cout << val << std::endl;
// val will be printed in an output field of length 10 starting from right end of the field:
std::cout << std::setw(10) << val << std::endl;
これは、
10
10
1234567890
(最後の行は、文字のオフセットを見るのを助けるためにそこにあります)。
出力フィールドの幅を設定する必要がある場合があります。通常は、構造化された適切なレイアウトで出力を取得する必要があります。これはstd::setw
のstd :: setwを使って行うことができます。
std::setw
の構文は次のstd::setw
です。
std::setw(int n)
ここで、nは設定する出力フィールドの長さです
std :: setprecision
out << setprecision(n)
またはin >> setprecision(n)
式で使用する場合、ストリームの精度パラメータを正確にnに設定します。この関数のパラメータは整数であり、これは精度の新しい値です。
例:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>
int main()
{
const long double pi = std::acos(-1.L);
std::cout << "default precision (6): " << pi << '\n'
<< "std::precision(10): " << std::setprecision(10) << pi << '\n'
<< "max precision: "
<< std::setprecision(std::numeric_limits<long double>::digits10 + 1)
<< pi << '\n';
}
//Output
//default precision (6): 3.14159
//std::precision(10): 3.141592654
//max precision: 3.141592653589793239
std :: setfill
式out << setfill(c)
使用すると、ストリームの塗りつぶし文字がout << setfill(c)
設定されc
。
注:現在の塗りつぶし文字は、 std::ostream::fill
で取得std::ostream::fill
ます。
例:
#include <iostream>
#include <iomanip>
int main()
{
std::cout << "default fill: " << std::setw(10) << 42 << '\n'
<< "setfill('*'): " << std::setfill('*')
<< std::setw(10) << 42 << '\n';
}
//output::
//default fill: 42
//setfill('*'): ********42
std :: setiosflags
out << setiosflags(mask)
またはin >> setiosflags(mask)
式で使用すると、ストリームのすべてのフォーマットフラグがマスクで指定されたin >> setiosflags(mask)
出力または出力されます。
すべてのstd::ios_base::fmtflags
:
-
dec
- 整数I / Oの10進数ベースを使用する -
oct
- 整数I / Oのために8進数を使用する -
hex
- 整数I / Oの16進数ベースを使用する -
basefield
-dec|oct|hex|0
マスキング操作に便利 -
left
- 左の調整(右に塗りつぶし文字を追加) -
right
- 右の調整(左に塗りつぶし文字を追加) -
internal
- 内部調整(内部指定点に塗りつぶし文字を追加) -
adjustfield
-left|right|internal
。マスキング操作に役立ちます -
scientific
- 科学的表記法を使用して浮動小数点型を生成するか、または固定された -
fixed
- 固定表記法を使用して浮動小数点型を生成するか、または科学的 -
floatfield
-scientific|fixed|(scientific|fixed)|0
。マスキング操作に役立ちます -
boolalpha
-bool
型を英数字形式で挿入および抽出する -
showbase
- 整数出力の数値ベースを示す接頭辞を生成し、通貨I / Oに通貨インジケータを必要とする -
showpoint
- 浮動小数点数の出力に無条件で小数点文字を生成する -
showpos
- 負でない数値出力のための+
文字を生成する -
skipws
- 特定の入力操作の前に空白をスキップする -
unitbuf
各出力操作後に出力をフラッシュする -
uppercase
- 特定の出力出力操作で特定の小文字をuppercase
置き換えuppercase
マニピュレータの例:
#include <iostream>
#include <string>
#include<iomanip>
int main()
{
int l_iTemp = 47;
std::cout<< std::resetiosflags(std::ios_base::basefield);
std::cout<<std::setiosflags( std::ios_base::oct)<<l_iTemp<<std::endl;
//output: 57
std::cout<< std::resetiosflags(std::ios_base::basefield);
std::cout<<std::setiosflags( std::ios_base::hex)<<l_iTemp<<std::endl;
//output: 2f
std::cout<<std::setiosflags( std::ios_base::uppercase)<<l_iTemp<<std::endl;
//output 2F
std::cout<<std::setfill('0')<<std::setw(12);
std::cout<<std::resetiosflags(std::ios_base::uppercase);
std::cout<<std::setiosflags( std::ios_base::right)<<l_iTemp<<std::endl;
//output: 00000000002f
std::cout<<std::resetiosflags(std::ios_base::basefield|std::ios_base::adjustfield);
std::cout<<std::setfill('.')<<std::setw(10);
std::cout<<std::setiosflags( std::ios_base::left)<<l_iTemp<<std::endl;
//output: 47........
std::cout<<std::resetiosflags(std::ios_base::adjustfield)<<std::setfill('#');
std::cout<<std::setiosflags(std::ios_base::internal|std::ios_base::showpos);
std::cout<<std::setw(10)<<l_iTemp<<std::endl;
//output +#######47
double l_dTemp = -1.2;
double pi = 3.14159265359;
std::cout<<pi<<" "<<l_dTemp<<std::endl;
//output +3.14159 -1.2
std::cout<<std::setiosflags(std::ios_base::showpoint)<<l_dTemp<<std::endl;
//output -1.20000
std::cout<<setiosflags(std::ios_base::scientific)<<pi<<std::endl;
//output: +3.141593e+00
std::cout<<std::resetiosflags(std::ios_base::floatfield);
std::cout<<setiosflags(std::ios_base::fixed)<<pi<<std::endl;
//output: +3.141593
bool b = true;
std::cout<<std::setiosflags(std::ios_base::unitbuf|std::ios_base::boolalpha)<<b;
//output: true
return 0;
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow