加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ostream:前缀带空格的正数

发布时间:2020-12-16 04:52:34 所属栏目:百科 来源:网络整理
导读:在C中,空格可以包含在printf格式化标志中,这导致正数以空格为前缀.这是用于对齐有符号值的有用功能.我无法弄清楚如何在C中做同样的事情.在C: double d = 1.2;printf("%fn",d);printf("%+fn",d);printf("% fn",d); 生产: 1.2+1.2 1.2 使用ostream,我可以
在C中,空格可以包含在printf格式化标志中,这导致正数以空格为前缀.这是用于对齐有符号值的有用功能.我无法弄清楚如何在C中做同样的事情.在C:
double d = 1.2;
printf("%fn",d);
printf("%+fn",d);
printf("% fn",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("%fn",1.2);
printf("%fn",-1.2);
printf("% fn",1.2);
printf("% fn",-1.2);

1.2
-1.2
 1.2
-1.2

请注意,第三个值以空格为前缀,而第四个值(负值)不是.

解决方法

您可以使用setfill和setw,如下所示:
cout << setw(4) << setfill(' ') << 1.2 << endl;
cout << setw(4) << setfill(' ') << -1.2 << endl;

这会产生以下输出:

1.2
-1.2

别忘了包含< iomanip>为了编译(link to ideone).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读