2010-03-23 42 views
6

我對printf-like格式字符串的理解是,您可以使用最小字段寬度爲任何轉換說明符加前綴。這似乎不適用於Cocoa的%@說明符。 例子:使用%@轉換說明符和字段寬度時,Cocoa的printf樣式格式不能按預期工作嗎?

NSLog(@"'%[email protected]'", @"foo"); 
NSLog(@"'%5s'", [@"foo" UTF8String]); 

輸出:

… 'foo' 
… ' foo' 

這是預期的行爲?

+0

我把它報告爲一個bug:https://bugreport.apple.com/ – 2010-03-24 14:48:35

+0

完成:http://openradar.appspot.com/radar?id = 213401 – 2010-03-24 15:18:10

回答

1

%@僅用於objective-c對象。因此,如果對象不是NSString,則字段寬度將無效。

我不知道%5 @的格式與%@相同。

+5

Cocoa的格式化函數總是調用'descriptionWithLocale:' (或'description')來獲取字符串表示。該字符串表示可以填充到給定的字段寬度。 – 2010-03-23 17:02:46

0

%@格式說明符只是被對象的描述所取代。它不會做任何截斷或填充。

+0

沒錯。你不認爲這是錯誤的行爲?或者你的意思是有文檔將其定義爲與其他格式說明符有所不同? – 2010-06-02 08:32:05

+0

@尼古拉:對於是否正確我沒有價值判斷,我只是說這就是它的工作原理:)。 – 2010-06-02 10:30:15

相關問題