String Format Specifiers
This article summarizes the format specifiers supported by string formatting methods and functions.
Format Specifiers
The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you can also use the “n$” positional specifiers such as %1$@ %2$s. For more details, see the IEEE printf specification. You can also use these format specifiers with the NSLog function.
| Specifier | Description |
|---|---|
|
| Objective-C object, printed as the string returned by |
|
|
|
|
| Signed 32-bit integer ( |
|
| Unsigned 32-bit integer ( |
|
| Unsigned 32-bit integer ( |
|
| Unsigned 32-bit integer ( |
|
| Unsigned 32-bit integer ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
|
| 8-bit unsigned character ( |
|
| 16-bit Unicode character ( |
|
| Null-terminated array of 8-bit unsigned characters. Because the |
|
| Null-terminated array of 16-bit Unicode characters. |
|
| Void pointer ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
|
| 64-bit floating-point number ( |
| Length modifier | Description |
|---|---|
|
| Length modifier specifying that a following |
|
| Length modifier specifying that a following |
|
| Length modifier specifying that a following |
|
| Length modifiers specifying that a following |
|
| Length modifier specifying that a following |
|
| Length modifier specifying that a following |
|
| Length modifier specifying that a following |
|
| Length modifier specifying that a following |
Platform Dependencies
OS X uses several data types—NSInteger, NSUInteger,CGFloat, and CFIndex—to provide a consistent means of representing values in 32- and 64-bit environments. In a 32-bit environment, NSInteger and NSUInteger are defined as int and unsigned int, respectively. In 64-bit environments, NSInteger and NSUInteger are defined as long and unsigned long, respectively. To avoid the need to use different printf-style type specifiers depending on the platform, you can use the specifiers shown in Table 3. Note that in some cases you may have to cast the value.
| Type | Format specifier | Considerations |
|---|---|---|
|
|
| Cast the value to |
|
|
| Cast the value to |
|
|
|
|
|
|
| The same as |
| pointer |
|
|
The following example illustrates the use of %ld to format an NSInteger and the use of a cast.
NSInteger i = 42; |
printf("%ld\n", (long)i); |
In addition to the considerations mentioned in Table 3, there is one extra case with scanning: you must distinguish the types for float and double. You should use %f for float, %lf for double. If you need to use scanf (or a variant thereof) with CGFloat, switch to double instead, and copy the double to CGFloat.
CGFloat imageWidth; |
double tmp; |
sscanf (str, "%lf", &tmp); |
imageWidth = tmp; |
It is important to remember that %lf does not represent CGFloat correctly on either 32- or 64-bit platforms. This is unlike %ld, which works for long in all cases.
格式化字符串与Objective-C对象
本文概述了Objective-C中支持的格式化字符串规范及其在NSString和CFString中的应用,包括对象、字符、整数、浮点数和Unicode字符的格式化方法。详细介绍了格式化说明符的使用和长度修饰符的特性,以及不同平台下数据类型的格式化方法。通过示例展示了如何在实际代码中使用这些格式化规范。

被折叠的 条评论
为什么被折叠?



