0

sprintfObjective-Cの機能を取得するにはどうすればよいですか? この関数はもちろんstdioC の一部なので、もちろん呼び出すことができますが、Foundation を使用しているため、NSStrings でも動作させる必要があります。

編集

不明瞭で申し訳ありませんが、実際には、文字列を返すPHPsprintf 関数のようなものを望んでいます。(これは、Josh Caswell が私の質問を非常に効率的に編集する前に、おそらくわずかに明らかでした。)NSLogコンソールに書き込む代わりに、戻り値として文字列 (またはポインター) を返すようになります。

4

3 に答える 3

7

Cocoa で同じことを行う最も近い関数はNSString's stringWithFormat.

使用sprintf:

char buf[100];
sprintf(buf, "Line %d of %d", currentLine, totalLines);

使用するstringWithFormat:

NSString res = [NSString stringWithFormat:@"Line %d of %d", currentLine, totalLines];

書式指定子stringWithFormat:を使用した Cocoa オブジェクトの印刷をサポートすることに注意してください。%@

于 2013-04-27T19:36:00.330 に答える
2

1 つのオプション:

NSString *OCSprintf(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);

NSString *OCSprintf(NSString *format, ...)
{
   va_list args;
   va_start(args, format);
   NSString *result = [[[NSString alloc] initWithFormat:format arguments:args] autorelease];
   va_end(args);
   return result;
}

stringWithFormat:これは、要求どおりに関数として (より正確には、そのいとこの 1 つを)ラップするだけです。これNS_FORMAT_FUNCTION(1,2)により、フォーマット文字列のチェックが確実に行われます。

于 2013-04-27T20:28:26.377 に答える