学习ojective之一

1.字符串格式化

NSString *p =@"an apple";

NSLog(@"whatis this? it is %@", p);

Objective-C中的字符串格式化输出

 

在使用诸如NSLog, [NSString stringWithFormat:]之类的函数时,都是基于c/c++风格的字符串格式化工作的.本来c/c++就没怎么用过,到iphone开发开发

转自http://blog.kungfusoft.com/programming/iphone/topic-281.html

在使用诸如NSLog, [NSString stringWithFormat:]之类的函数时,都是基于c/c++风格的字符串格式化工作的.

 

本来c/c++就没怎么用过,到iphone开发开发时掺合上NS系的对象,格式化输出更是一头的乱.

看了一下Programming Guide for Cocoa的文档,还是有比较详尽的说明的,整理出来备查.

 

格式定义

The formatspecifiers supported by the NSString formatting methods and CFString formattingfunctions follow the IEEE printf specification; the specifiers are summarizedin 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 alsouse these format specifiers with the NSLog function.

Table 1 Formatspecifiers supported by the NSString formatting methods and CFString formattingfunctions 定义   说明

%@      Objective-C object, printed as the stringreturned by descriptionWithLocale: if available, or description otherwise. Alsoworks with CFTypeRef objects, returning the result of the CFCopyDescriptionfunction.

%%       ‘%’ 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 longlong)

%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 longlong), printed in hexadecimal using the digits 0–9 and lowercase a–f

%qX     Unsigned 64-bit integer (unsigned longlong), 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 orequal 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 orequal 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 theoctal format \\ddd or the Unicode hexadecimal format \\udddd, where d is adigit

%C       16-bit Unicode character (unichar),printed by NSLog() as an ASCII character, or, if not an ASCII character, in theoctal format \\ddd or the Unicode hexadecimal format \\udddd, where d is adigit

%s        Null-terminated array of 8-bit unsignedcharacters. %s interprets its input in the system encoding rather than, forexample, UTF-8.

%S        Null-terminated array of 16-bit Unicodecharacters

%p        Void pointer (void *), printed inhexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x

%L        Length modifier specifying that afollowing a, A, e, E, f, F, g, or G conversion specifier applies to a longdouble argument

%a        64-bit floating-point number (double),printed in scientific notation with a leading 0x and one hexadecimal digitbefore 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 digitbefore 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 afollowing d, i, o, u, x, or X conversion specifier applies to a size_t or thecorresponding 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 thecorresponding 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_targument

 

平台依赖

Mac OS X usesseveral data types—NSInteger, NSUInteger,CGFloat, and CFIndex—to provide aconsistent means of representing values in 32- and 64-bit environments. In a32-bit environment, NSInteger and NSUInteger are defined as int and unsignedint, respectively. In 64-bit environments, NSInteger and NSUInteger are definedas long and unsigned long, respectively. To avoid the need to use differentprintf-style type specifiers depending on the platform, you can use thespecifiers shown in Table 2. Note that in some cases you may have to cast thevalue.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值