Cでは、printfフォーマットフラグにスペースを含めることができます。これにより、正の数の前にスペースが付きます。これは、符号付きの値を揃えるのに便利な機能です。C++で同じことを行う方法がわかりません。Cの場合:
double d = 1.2;
printf("%f\n",d);
printf("%+f\n",d);
printf("% f\n",d);
生成:
1.2
+1.2
1.2
ostreamを使用して、最初の2つを実行できますが、3番目を実行するにはどうすればよいですか?
int d = 1.2;
std::cout << d << std::endl;
std::cout << std::showpos << d << std::endl;
// ??????????????
編集:すべての値の前にスペースを付けるだけかどうかについて、混乱が生じているようです。正の値の前にスペースを付けるだけです。これは、a)printfスペースフラグと同様、b)showposと同様ですが、「+」ではなくスペースを除きます。例えば:
printf("%f\n", 1.2);
printf("%f\n", -1.2);
printf("% f\n", 1.2);
printf("% f\n", -1.2);
1.2
-1.2
1.2
-1.2
3番目の値の前にはスペースが付いていますが、4番目の(負の)値にはスペースが付いていないことに注意してください。