使用C样式字符串格式命令
描述
C函数的包装器把格式数据写成串
,它返回一个字符包含文本和变量值的格式化组合的向量。
用法
冲刺(fmt,…)gettextf(fmt,…,domain=NULL)
论据
柔性制造技术 |
格式字符串的字符向量,每个字符串最多8192个字节。
|
... |
要传递到的值柔性制造技术 。仅逻辑,支持整数、实数和字符向量,但有些强制将完成:请参阅“详细信息”部分。最多100个。
|
领域 |
看见获取文本 .
|
细节
把格式数据写成串
是系统的包装器把格式数据写成串
C库功能。尝试检查值的模式通过的与提供的格式匹配,以及R(右)的特殊值(不适用
,Inf公司
,-Inf公司
和NaN公司
)正确处理。
gettextf(获取文本)
是一个提供C样式的便利函数使用格式字符串的可能翻译进行字符串格式设置。
参数(包括柔性制造技术
)如果可能的话,全部回收最长长度的次数,然后是格式并行完成。允许零长度参数,并将给出零长度结果。即使未使用,也会计算所有参数,并且因此,有些类型(例如。,“符号”
或“语言”
,请参阅类型
)不允许。未使用的参数柔性制造技术
导致警告。(格式%.0s个
可用于“跳过”一个参数。)
以下内容摘自Kernighan和Ritchie(参见参考):但实际实施将遵循C99标准和精细的细节(尤其是用户错误下的行为)可能取决于平台。对编号参数的引用来自POSIX。
字符串柔性制造技术
包含普通字符,传递到输出字符串,以及转换对通过提供的参数进行操作的规范...
。允许的转换规范以%
以集合中的一个字母结尾aAdifeEgGosxX%
。这些字母表示以下类型:
d日
,我
,o个
,x个
,X(X)
整数值,o个
八进制,x个
和X(X)
十六进制(对a-f型
作为代码)。具有正整数的数字变量值将被强制为整数。格式d日
和我
也可以用于逻辑变量,这些变量将被转换为0
,1
或不适用
.
(f)
双精度值,单位为“(f)固定的点“十进制表示法的形式”[-]mmm.ddd“。的数量小数位数(“d”)由精度指定:默认值为6;精度为0时,将不显示小数点。非有限值已转换为不适用
,NaN公司
或者(也许后面跟着一个标志签署人)Inf公司
.
e(电子)
,E类
双精度值,in“e(电子)指数十进制表示法形式[-]m.ddde[+-]xx号
或[-]m.dddE[+-]xx号
.
克
,G公司
双精度值,in%e(电子)
或%E类
如果指数小于-4或大于或,则设置格式等于精度,以及%(f)
否则格式化。(精度(默认为6)指定重要的这里是数字,而在%f、 %e(%)
,是的小数点后的位数。)
一
,一个
双精度值,二进制表示法表单的[-]0xh.hhhp[+-]天
。这是一个二进制分数用十六进制乘以2的(十进制)幂表示。数字小数点后的十六进制数字由精度指定:默认值是足够的数字来精确表示内部二进制表示。非有限值转换为不适用
,NaN公司
或者(也许后面跟着一个符号)Inf公司
.格式%一个
对使用小写x个
,第页
和十六进制值:格式%A类
使用大写字母。
这应该在所有平台上都受支持,因为它是C99的一个功能。格式不是唯一定义的:尽管这是可能的成为领先者小时
总是零或一,这不是总是这样。大多数系统将抑制尾随零,但少数系统不要。在一个编写良好的平台上,对于正常数字在小数点前加一个前导数字(默认情况下)13十六进制数字,因此为53位。非规范化的处理(也称为“亚正常”)数字非常依赖于平台。
秒
字符串。字符不适用
是已转换为“不适用”
.
%
字面意义的%
(没有额外的格式在这种情况下,允许使用下面给出的字符)。
转换依据作为字符
用于非字符参数秒
和依据as.双
对于具有的非双精度参数f、 e、e、g、g
注:长度为在转换之前确定,因此不要依赖内部强制,如果这会改变长度。强制仅完成一次,所以如果长度(fmt)>1
那么所有元素都必须期望相同类型的参数。
此外,在初始%
和终止转换字符可以按任何顺序:
最小值
由句点分隔的两个数字,表示字段宽度(米
)和精度(n个
).
-
在其字段中对转换的参数进行左调整。
+
始终打印带符号的数字:仅在默认情况下负数印有符号。
- 空间
如果第一个字符不是符号,则在空格前添加前缀。
0
对于数字,用前导填充到字段宽度零。对于字符,在某些平台上此零位是被别人忽视。
#
为数字指定“备用输出”,其动作取决于类型:对于x个
或X(X)
,0x个
或0倍
将加前缀非零结果。对于e(电子)
,e(电子)
,(f)
,克
和G公司
,输出将始终具有小数点;对于克
和G公司
,不会删除尾部的零。
此外,紧接着%
可能会来1$
到99$
引用带编号的参数:这允许参数无序引用,主要用于错误消息。如果这样做,最好是所有格式numbered:如果不是,则未编号的参数将按顺序处理参数。请参阅示例。此符号允许参数的使用次数超过一次,在这种情况下,它们必须用作同一类型(整数,双精度或字符)。
字段宽度或精度(但不是两者)可以由星号*
:在这种情况下,参数指定所需的数字。负字段宽度被视为“-”标志,后跟正字段宽度。负精度被视为省略了精度。参数应为整数,但为双精度参数将被强制为整数。
的元素限制为8192字节柔性制造技术
、和上的单个字符串中包含的字符串%
信转换规范。
字段宽度和精度%秒
转换被解释如C标准所述,表示为字节,而不是字符。
C双打用于R(右)数字向量有符号零把格式数据写成串
可以输出为-0
,-0.000
。。。。
价值
长度为最长输入的字符向量。如果有的元素柔性制造技术
或任何字符参数声明为UTF-8,结果的元素将使用UTF-8格式,并具有编码声明为UTF-8。否则,它将位于当前区域设置中编码。
警告
格式字符串传递给操作系统把格式数据写成串
功能,以及不正确的格式会导致后者崩溃R(右)过程。R(右)对格式执行健全性检查,但不是所有可能的用户所有平台上的错误都已经过测试,有些可能是终端错误。
此处未记录的输入行为“未定义”,这意味着它可以因平台而异。
作者
原始代码由Jonathan Rougier编写。
工具书类
Kernighan,B.W.和Ritchie,D.M.(1988)C编程语言。第二版,普伦蒂斯·霍尔。描述附录表B-1中的格式选项。
C标准,尤其是“C99”的ISO/IEC 9899:1999。链接可以在以下位置找到https://developer.r-project.org/Portability.html.
https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html用于POSIX扩展,如带编号的参数。
男子短跑
在Unix-like系统上。
另请参见
格式C
用于格式化类似的时尚。
粘贴
另一种创建向量组合的方法文本和值。
获取文本
用于自动翻译的机制的文本。
示例
##注意格式:R中的大多数内容都是浮点##只有整数值的实数被强制为整数。sprintf(“%s是%f英尺高\n”,“Sven”,7.1)#OKtry(sprintf(“%s有%i英尺高”,“Sven”,7.1))#不正常sprintf(“%s有%i英尺高”,“Sven”,7)#OK##使用文字%:sprintf(“%.0f%%表示同意(在%.0f大小的样本中)”,66.666,3)##pi的各种格式:sprintf(“%f”,pi)sprintf(“%.3f”,圆周率)sprintf(“%1.0f”,圆周率)冲刺(“%5.1f”,圆周率)sprintf(“%05.1f”,圆周率)sprintf(“%+f”,圆周率)sprintf(“%f”,pi)sprintf(“%-10f”,圆周率)#左对齐sprintf(“%e”,pi)sprintf(“%E”,pi)sprintf(“%g”,pi)sprintf(“%g”,1e6*pi)#->指数sprintf(“%.9g”,1e6*pi)#->“固定”冲刺(“%G”,1e-6*pi)##无截断:sprintf(“%1.f”,101)##重复使用一个参数三次,显示%x和%x之间的差异xx<-sprintf(“%1$d%1$x%1$x”,0:15)xx<-矩阵(xx,dimnames=list(rep(“”,16),“%d%x%x”))noquote(格式(xx,justify=“right”))##更复杂:sprintf(“最小10-char字符串“%10s”,c(“a”、“ABC”和“更长的”)##qdapTools 1.0.0中与平台相关的错误示例:##可以用空格或零填充。sprintf(“%09s”,month.name)n<-1:18sprintf(paste0(“e with%2d digits=%.”,n,“g”),n,exp(1))##使用参数的顺序不正确sprintf(“第二个%2$1.0f,第一个%1$5.2f,第三个%3$1.0f”,pi,2,3)##使用星号表示宽度或精度sprintf(“精度%.*f,宽度'%*.3f'”,3,pi,8,pi)##星号和参数重复使用,“e”示例重申:sprintf(“带有%1$2d个数字的e=%2$.*1$g”,n,exp(1))##循环参数sprintf(“%s%d”,“测试”,1:3)##显示舍入/表示错误的二进制输出x<-序列(0,1.0,0.1);y<-c(0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1)cbind(x,sprintf(“%a”,x),sprindf(“%d”,y))