在 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,我可以做前两个,但我怎么做第三个?
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
请注意,第三个值以空格为前缀,而第四个(负)值则没有。