根據vswprintf的文檔:此函數使用指向參數列表的指針寫入格式化輸出。針對iOS的寫入格式化輸出
有誰知道可以實現類似效果的原生iOS API的函數嗎?
或者,你會怎麼做?
我知道的NSString Initwithformat可以模擬衝刺,但什麼是模擬vswprintf甚至vsprintf中的作用?
感謝
根據vswprintf的文檔:此函數使用指向參數列表的指針寫入格式化輸出。針對iOS的寫入格式化輸出
有誰知道可以實現類似效果的原生iOS API的函數嗎?
或者,你會怎麼做?
我知道的NSString Initwithformat可以模擬衝刺,但什麼是模擬vswprintf甚至vsprintf中的作用?
感謝
的NSString
相當於vsprintf
是initWithString:arguments:
,像這樣:
// format has type NSString *
// ap has type va_list
NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:ap];
還有就是NSString
沒有單獨的寬字符版本。每個NSString
存儲Unicode字符,而不是字節。如果您有一組UTF-16字符,則可以使用+[NSString stringWithCharacters:length:]
將其轉換爲NSString
。
NSString
認爲%s
格式字符串表示由一個零字節終止的單字節字符代碼數組。
NSString
認爲%S
格式字符串表示由兩個零字節終止的雙字節字符代碼的數組。
在iOS上,一個wchar_t
爲4個字節。我不認爲NSString
支持%ls
格式的字符串爲wchar_t
的數組。 This documentation沒有提及使用l
修飾符和s
格式。我看着the CFFormatCharsType
case in __CFStringAppendFormatCore
,我不認爲它支持%ls
。
如果你有wchar_t
一個數組,它包含UTF-32字符代碼,您可以創建一個包含這樣相同字符的NSString
:
wchar_t *wchars = ...;
unsigned int wcharCount = ...; // number of characters pointed to by wchars
NSString *string = [[NSString alloc] initWithBytes:(const void *)wchars
length:wcharCount * sizeof *wchars
encoding:NSUTF32StringEncoding];
如果你想只用vswprintf
,你可以; iOS支持它。您需要#include <wchar.h>
才能獲得其聲明。
你好,我想你剛纔這個說的:NSString的* iosString = [[NSString的頁頭] initWithFormat:@ 「%1!=%ls」 的論點:argListTest]。正在返回我訪問不良。這個函數的目的是發送argListTest中的* w_char。這是正確的方法嗎? – mskw 2012-07-30 18:39:55
我按下輸入得太早,但現在應該更新。 – mskw 2012-07-30 18:42:10
我已經更新了我的答案。 – 2012-07-30 18:54:13