什么是“格式化字符串”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是“格式化字符串”?相关的知识,希望对你有一定的参考价值。
什么是“格式化字符串”?
格式化字符串就是按一定格式输出的字符串举个例子来说,你想输出时间
2006-07-25 21:20:30
这就是一个格式化字符串,它的格式为
yyyy-mm-dd hh:mm:ss
下面再给你一个操作的例子,比如说你要输出时间
FormatDatetime('yyyy-mm-dd hh:mm:ss',Now);
就能够按我上面的格式输出时间了
又比如说你经过计算得到一个结果,你想用一个有格式的字符串输出
例如:计算结果是XXX,那么可以这样写:
Format('计算结果是%d',[result]);
我给出的是delphi代码,如果你用C的,用printf语句也可以实现
printf("计算结果是%d",result); 参考技术A string.format("0:00:1:00",minute,second)
0:00
第一个表示占位符,后面的0表示显示两位,不足补0。
比方说
minute
=
5
格式化出来就变成05了
在 C 中使用舍入和千位分隔符格式化字符串的最有效方法是啥?
【中文标题】在 C 中使用舍入和千位分隔符格式化字符串的最有效方法是啥?【英文标题】:What is the most efficient way to format strings with rounding and thousand separator in C?在 C 中使用舍入和千位分隔符格式化字符串的最有效方法是什么? 【发布时间】:2013-05-08 14:11:32 【问题描述】:所以我有一个内部循环情况,其中包含浮点和整数值的缓冲区,这些值将被复制到另一个字符串格式的缓冲区。
在格式化字符串时,我有哪些替代方法可以舍入并插入千位分隔符?无论我最终使用哪种方法,它都必须足够灵活以允许不同的格式。另外,因为这是一个内循环场景,所以我想尽可能优化任何解决方案。
看起来locale.h
是一种方法。但在这种情况下,我如何设置自定义语言环境,以及如何实际使用它们?还是有更好的选择?如果这是一个菜鸟问题,请指出正确的方向。
编辑:
这里有几个例子来说明:
1000
给出1,000
(如果我想使用,
作为千位分隔符)
1000
给出1 000
(如果我想使用space
作为千位分隔符)
1000.123
给出1,000.1
(如果我想四舍五入并使用,
作为千位分隔符)
0
给出 ``(如果我想将零显示为空白字符串)
顺便说一句,我在 POSIX 系统上...
【问题讨论】:
C++ 好吗?还是必须是普通的 C 语言? @csd:抱歉,仅限 C... 【参考方案1】:您可以尝试使用setlocale
设置语言环境,并使用带有'
标志和精度值的printf 进行舍入。这是否可行,取决于您的 C 库。
查看以下程序:
#include <locale.h>
#include <stdio.h>
int main()
double value = 1234567890.123;
if (!setlocale(LC_ALL, "en_US.utf8"))
fprintf(stderr, "Locale not found.\n");
return 1;
printf("%'.0f\n", value);
printf("%'.1f\n", value);
return 0;
在我的 Ubuntu 系统上,输出是:
1,234,567,890
1,234,567,890.1
【讨论】:
它只是启用当前语言环境的千位分隔符。 是否可以更改分隔符?改用空间 并非如此。您可以尝试找到一个使用空间作为千位分隔符的语言环境。法语语言环境通常使用空格字符,但它使用逗号作为小数分隔符。如果您想要一个可移植的解决方案,您必须编写自己的格式化函数。以上是关于什么是“格式化字符串”?的主要内容,如果未能解决你的问题,请参考以下文章
Python面试必考重点之字符串与正则表达式第一关——python语言中的四种格式化字符串的方法/什么是模板字符串及如何使用