vswprintf のドキュメントによると: この関数は、引数のリストへのポインターを使用して書式設定された出力を書き込みます。
同様の効果を達成できるネイティブ iOS API の関数を知っている人はいますか?
または、これをどのように行いますか?
NSString Initwithformat がスプリントをエミュレートできることは知っていますが、vswprintf または vsprintf をエミュレートする関数は何ですか?
ありがとう
vswprintf のドキュメントによると: この関数は、引数のリストへのポインターを使用して書式設定された出力を書き込みます。
同様の効果を達成できるネイティブ iOS API の関数を知っている人はいますか?
または、これをどのように行いますか?
NSString Initwithformat がスプリントをエミュレートできることは知っていますが、vswprintf または vsprintf をエミュレートする関数は何ですか?
ありがとう
NSString
is に相当するものvsprintf
は、次のinitWithString:arguments:
ようになります。
// format has type NSString *
// ap has type va_list
NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:ap];
の個別のワイド文字バージョンはありませんNSString
。EveryNSString
は、バイトではなく Unicode 文字を格納します。UTF-16 文字の配列がある場合は、 を使用+[NSString stringWithCharacters:length:]
してそれをNSString
.
NSString
%s
は、フォーマット文字列が 0 バイトで終わる 1 バイトの文字コードの配列を意味すると考えています。
NSString
%S
は、書式文字列が 2 バイトの文字コードの配列を意味し、2 つのゼロ バイトで終わると考えています。
iOS では、awchar_t
は 4 バイトです。の配列のフォーマット文字列をNSString
サポートしているとは思わない. このドキュメントでは、形式で修飾子を使用することについては言及していません。のケースを見ましたが、サポートしていないと思います。%ls
wchar_t
l
s
CFFormatCharsType
__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>
その宣言を取得する必要があります。