64

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

4

2 に答える 2

113

次のメソッドを呼び出すことによりNSString、を文字列に変換できます。UTF8UTF8String

printf("%s", [string UTF8String]);
于 2010-09-26T00:26:46.603 に答える
2
//public method that accepts a string argument

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

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

NSString.h(htmlバージョン)によると、UTF8StringメソッドはMacOSXでのみ使用できます。

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

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

注文字列ポインタはメモリを指しているため、文字列の内容のコピーを保持する場合は文字列をコピーする必要がありますが、すぐに印刷しても問題ありませんか?

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

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

Linuxなどでは:

NSString.hを見つけます**これはhtmlドキュメントファイルも見つけたことに注意してください

それ以外の場合は:

/ usr-nameNSString.hを検索します

マイレージは異なる場合があります:)

ありがとう。

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

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

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

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

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

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

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

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

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

于 2018-06-19T12:29:32.723 に答える