Objective-C:NSLog中的%-2i是什么?

时间:2014-08-20 13:35:26

标签: objective-c

我正在阅读一本关于Objective-C的书,并且未经任何解释而得到以下内容:

NSLog(@"%-2i %i", n1, n2);

%-2i是什么意思它只是以%i的方式打印出数字?

谢谢。

3 个答案:

答案 0 :(得分:2)

NSLog()[NSString stringWithFormat:]使用printf(3)格式规则,并且来自printf manpage

  

负字段宽度标志;转换后的值将被保留   调整了场边界。除了n次转换之外,还有   转换后的值用空格填充在右边,而不是在空格上   留下空白或零。 A - 如果两者都给出,则覆盖0。

因此它使用2个左对齐的空格打印整数。

答案 1 :(得分:1)

我相信它左对齐第一个整数到2个字符,这里有一个更好的答案:

objective-c code to right pad a NSString?

答案 2 :(得分:1)

这类问题通常不受欢迎,因为在文档中查找起来很简单,但是让我添加相关链接:

在Google上搜索NSlog,让我们进入苹果文档的此页面:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html

告诉我们一些"格式化字符串"和@"format"(可能没有直接链接)。 但是当你将它插入顶部的搜索栏时,你最终会进入https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFStrings/formatSpecifiers.html。同样,它没有列出%i,但会告诉您查看IEEE fprintf文档:http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html

最后,您找到了%i-2i的定义:

  

负字段宽度被视为' - '标志后跟正字段宽度。如果省略精度,则采用负精度