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

一种选择:

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:为一个函数。NS_FORMAT_FUNCTION(1,2)确保您仍然可以进行格式字符串检查。

于 2013-04-27T20:28:26.377 回答
0
NSString * myString = [NSString stringWithFormat:@"...", params…];
const char * myStrPtr = [myString UTF8String];
于 2013-04-29T21:27:17.143 回答