所謂格式化字串係指 formatStromg 具有轉換格式字符,轉換格式字符如下表
轉換格式字符 | 說明 |
---|---|
%@ | 物件 |
%% | % 字元 |
%d, %D | 有正負號 32 位元整數 |
%u, %U | 無正負號 32 位元整數 |
%x | 無正負號 32 位元整數,用小寫英文字母的十六進位印出 |
%X | 無正負號 32 位元整數,用大寫英文字母的十六進位印出 |
%o, %O | 無正負號 32 位元整數,用八六進位印出 |
%f | 64 位元浮點數 |
%e | 64 位元浮點數,用小寫英文字母的科學記號印出 |
%E | 64 位元浮點數,用大寫英文字母的科學記號印出 |
%g | 64 位元浮點數,同 %e 印出樣式,指數的絕對值小於或等於 4 便直接印出數字 |
%G | 64 位元浮點數,同 %E 印出樣式,指數的絕對值小於或等於 4 便直接印出數字 |
%c | 8 位元無正負號 ASCII 字元 |
%C | 16 位元無正負號 ASCII 字元 |
%s | 8 位元無正負號字元 |
%S | 16 位元 Unicode 字元 |
%p | 指標 |
%a | 64 位元浮點數,用 16 進位 (0x) 的科學記號印出 |
%A | 64 位元浮點數,用 16 進位 (0x) 的科學記號印出 |
%F | 64 位元浮點數 |
單一格式化字串可以有多個轉換格式字符,格式化字串後所接參數的型態與個數也需要與轉換格式字符相同。舉例如下
#import <Foundation/Foundation.h> int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int a = 4; int b = 1; NSLog(@"狗狗有 %d 隻腳, %d 條尾巴!", a, b); [pool drain]; return 0; } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:formattingdemo.m 功能:示範 Objective-C 程式 作者:張凱慶 時間:西元 2012 年 7 月 */
此例 NSLog() 中的格式化字串有兩個轉換格式字符 %d ,因此另外加入兩個 int 型態 (type) 的變數 (variable) a 與 b
NSLog(@"狗狗有 %d 隻腳, %d 條尾巴!", a, b);
我們在 demo.m 中是直接以一個 NSString 字串物件當 NSLog() 的參數
// 呼叫 NSLog() 函數,印出 s1 的內容 NSLog(s1);
在新版的 Xcode 中,直接以單一個 NSString 字串物件當 NSLog() 的參數,編譯時可能會出現警告訊息,建議改寫成格式化字串的方式,如下
NSLog(@"%@", s1);
NSLog() 是個功能單純的函數,對了,我們還沒詳細介紹過 Objective-C 的函數咧!先看看看所有可執行程式必定有的 main() 吧!
中英文術語對照 | |
---|---|
函數 | function |
格式化字串 | formatting string |
物件 | object |
參數 | argument |
型態 | type |
變數 | variable |
您可以繼續參考
基礎篇
相關目錄
Objective-C 入門指南
Objective-C 教材
首頁
參考資料
Learning Objective-C: A Primer
The Objective-C Programming Language
Cocoa Fundamentals Guide
Coding Guidelines for Cocoa
Advanced Memory Management Programming Guide
Archives and Serializations Programming Guide
沒有留言:
張貼留言