web-dev-qa-db-ja.com

NSStringでprintfを使用する方法

NSLogのようなものを使用する必要がありますが、タイムスタンプと改行文字は使用しないため、printfを使用しています。 NSStringでこれを使用するにはどうすればよいですか?

59
node ninja

UTF8メソッドを呼び出すことで、NSStringUTF8String文字列に変換できます。

printf("%s", [string UTF8String]);
102
Jacob Relkin
//public method that accepts a string argument

- (void) sayThis : ( NSString* )  this 
{

    printf("%s",[this cString]);    
}

NSString.h(htmlバージョン)によると、UTF8StringメソッドはMac OSXでのみ利用可能です。

(以下を参照)私が調べた他のすべてのメソッドは、「availability:Openstep」としてマークされています

通常のchar *文字列を返すメソッドは他にもありますが、文字変換例外をスローする場合があります。

[〜#〜] note [〜#〜]文字列ポインタは消える可能性のあるメモリを指すので、文字列の内容のコピーを保持したいが、すぐに印刷する場合は文字列をコピーする必要があります大丈夫ですか?

エンコードされた文字列を返すメソッドと、必要なエンコードが機能するかどうかをテストするメソッドもあるので(必要だと思う)、必要なエンコードが機能するかどうかを確認し、必要に応じてエンコードされた文字列を要求できます。

.hファイル自体の読み取りから、多くのエンコードとエンコード間の変換が行われます。これらは列挙を使用して管理されるため、必要なエンコードのタイプを引数として渡すことができます。

Linuxなどでは次のようにします。

nSString.hを見つけます**これはhtml docファイルも見つけたことに注意してください

それ以外の場合:

/ usr -name NSString.hを見つけます

[〜#〜] note [〜#〜]走行距離は異なる場合があります:)

ありがとう。

NSString.h html docファイルから:

cString-(const char *)cString;可用性:OpenStep

デフォルトのエンコーディングで、8ビット文字のヌル終了文字列へのポインタを返します。指し示されているメモリは呼び出し側によって所有されていないため、呼び出し側は内容をコピーして保持する必要があります。変換中に情報の損失が発生する場合、NSCharacterConversionExceptionを発生させます。 (-canBeConvertedToEncoding:を参照してください。)

cStringLength-(NSUInteger)cStringLength;可用性:OpenStep

デフォルトのC文字列エンコーディングを使用して、このUnicode文字列のバージョンの長さをバイトに変換して返します。変換によって情報が失われる場合、結果は予測できません。 -canBeConvertedToEncoding:を確認してください。

cStringUsingEncoding:-(const char *)cStringUsingEncoding:(NSStringEncoding)encoding;可用性:MacOS-X 10.4.0、Base 1.2.0

指定されたエンコーディングのヌルで終了する文字列へのポインタを返します。 NB。 GNUstepでは、これを使用して、nulで終了するutf-16文字列(16ビット文字)と8ビット文字列を取得できます。指し示されているメモリは呼び出し側によって所有されていないため、呼び出し側は内容をコピーして保持する必要があります。変換中に情報の損失が発生する場合、NSCharacterConversionExceptionを発生させます。

canBeConvertedToEncoding:-(BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding;可用性:OpenStep

情報を失うことなく、この文字列を指定された文字列エンコードに変換できるかどうかを返します。

0
supernoob