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.
Table 1 Format specifiers supported by the NSString
formatting methods and CFString formatting functions
Specifier
Description
%@
|
Objective-C object, printed as the string returned by descriptionWithLocale: if available, or description otherwise. Also works withCFTypeRef objects, returning the result of the CFCopyDescription function.
|
%%
|
'%' character
|
%d , %D ,%i
|
Signed 32-bit integer (int )
|
%u , %U
|
Unsigned 32-bit integer (unsigned int )
|
%hi
|
Signed 16-bit integer (short )
|
%hu
|
Unsigned 16-bit integer (unsigned short )
|
%qi
|
Signed 64-bit integer (long long )
|
%qu
|
Unsigned 64-bit integer (unsigned long long )
|
%x
|
Unsigned 32-bit integer (unsigned int ), printed in hexadecimal using the digits 0–9 and lowercase a–f
|
%X
|
Unsigned 32-bit integer (unsigned int ), printed in hexadecimal using the digits 0–9 and uppercase A–F
|
%qx
|
Unsigned 64-bit integer (unsigned long long ), printed in hexadecimal using the digits 0–9 and lowercase a–f
|
%qX
|
Unsigned 64-bit integer (unsigned long long ), printed in hexadecimal using the digits 0–9 and uppercase A–F
|
%o , %O
|
Unsigned 32-bit integer (unsigned int ), printed in octal
|
%f
|
64-bit floating-point number (double )
|
%e
|
64-bit floating-point number (double ), printed in scientific notation using a lowercase e to introduce the exponent
|
%E
|
64-bit floating-point number (double ), printed in scientific notation using an uppercase E to introduce the exponent
|
%g
|
64-bit floating-point number (double ), printed in the style of %e if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
|
%G
|
64-bit floating-point number (double ), printed in the style of %E if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
|
%c
|
8-bit unsigned character (unsigned char ), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format\\ddd or the Unicode hexadecimal format \\udddd , where d is a digit
|
%C
|
16-bit Unicode character (unichar ), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd , where d is a digit
|
%s
|
Null-terminated array of 8-bit unsigned characters. %s interprets its input in the system encoding rather than, for example, UTF-8.
|
%S
|
Null-terminated array of 16-bit Unicode characters
|
%p
|
Void pointer (void * ), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x
|
%L
|
Length modifier specifying that a following a , A , e , E , f , F , g , or G conversion specifier applies to a long double argument
|
%a
|
64-bit floating-point number (double ), printed in scientific notation with a leading 0x and one hexadecimal digit before the decimal point using a lowercase p to introduce the exponent
|
%A
|
64-bit floating-point number (double ), printed in scientific notation with a leading 0X and one hexadecimal digit before the decimal point using a uppercase P to introduce the exponent
|
%F
|
64-bit floating-point number (double ), printed in decimal notation
|
%z
|
Length modifier specifying that a following d , i , o , u , x , or X conversion specifier applies to a size_t or the corresponding signed integer type argument
|
%t
|
Length modifier specifying that a following d , i , o , u , x , or X conversion specifier applies to a ptrdiff_t or the corresponding unsigned integer type argument
|
%j
|
Length modifier specifying that a following d , i , o , u , x , or X conversion specifier applies to a intmax_t or uintmax_t argument
|
Platform Dependencies
Mac 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 2. Note that in some cases you may have to cast the value.
Table 2 Format specifiers for data types
Type
Format specifier
Considerations
NSInteger
|
%ld or %lx
|
Cast the value to long
|
NSUInteger
|
%lu or %lx
|
Cast the value to unsigned long
|
CGFloat
|
%f or %g
|
%f works for floats and doubles when formatting; but see below warning when scanning
|
CFIndex
|
%ld or %lx
|
The same as NSInteger
|
pointer
|
%p
|
%p adds 0x to the beginning of the output. If you don't want that, use %lx and cast to long .
|
long long
|
%lld or %llx
|
long long is 64-bit on both 32- and 64-bit platforms
|
unsigned long long
|
%llu or %llx
|
unsigned long long is 64-bit on both 32- and 64-bit platforms
|
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 2, 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
toCGFloat
.
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.
分享到:
相关推荐
本文转自:...The following specifiers may be used in the format string. As of MySQL 3.23, the “%” character is required before format spe
Format Specifiers Width - specifying minimum field size Left Justification The Field Precision Value Explicit File output AWK Numerical Functions Trigonometric Functions Exponents, logs and ...
3. **Format Specifiers`: 使用`%b`格式化输出二进制值,这在`printf`或`format`方法中非常有用: ```java int num = 15; System.out.printf("The binary representation of %d is: %b%n", num, num); // 输出 ...
4. **Format Specifiers**:`PyF`支持多种格式化选项,允许你控制数字、日期等的显示方式。 5. **安全性**:由于所有格式化在编译时完成,`PyF`可以避免运行时的字符串操作带来的潜在安全风险。 `PyF-master`这个...
The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_. To guarantee uniqueness, they should be based on the full path in a project's source tree. For example, the file foo/src/bar/baz.h...
9.17 --depend_format=string 9.18 --diag_error=tag[,tag,…] 9.19 --diag_remark=tag[,tag,…] 9.20 --diag_style={arm|ide|gnu} 9.21 --diag_suppress=tag[,tag,…] 9.22 --diag_warning=tag[,tag,…] 9.23 --dll...
9.6.4. Self-defined OUTPUT formats using PHP's date() format specifiers 9.7. Working examples 9.7.1. Checking dates 9.7.2. Sunrise and Sunset 9.7.3. Timezones 10. Zend_Db 10.1. Zend_Db_Adapter ...
Contents Contents ii List of Tables x List of Figures xiv 1 Scope 1 2 Normative references 2 3 Terms and definitions 3 4 General principles 7 4.1 Implementation compliance . ....4.2 Structure of this ...
go程序设计语言 Contents Preface................................................................................................................................. xix PART 1—WHY LEARN GO—GETTING ...
The Way to Go,: A Thorough Introduction to the Go Programming Language 英文书籍,已Cross the wall,从Google获得书中源代码,分享一下。喜欢请购买正版。 目录如下: Contents Preface......................