sprintf对NSString的功能

时间:2013-04-27 19:33:01

标签: objective-c cocoa nsstring printf

如何在Objective-C中获得sprintf的功能?该函数当然是C语言中stdio的一部分,所以我当然可以调用它,但由于我使用的是Foundation,我需要它同时使用NSString

修改

我为自己的不正常而道歉,但我实际上希望有更像PHP sprintf function的东西,它会返回一个字符串。 (在Josh Caswell非常有效地编辑我的问题之前,这可能有点明显。)它就像NSLog但是不是写入控制台而是将字符串(或指针)作为返回值。

3 个答案:

答案 0 :(得分:6)

在Cocoa中执行相同操作的最接近的函数是NSString的{​​{1}}。

使用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对象。

答案 1 :(得分: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)确保您仍然可以进行格式字符串检查。

答案 2 :(得分:0)

NSString * myString = [NSString stringWithFormat:@"...", params…];
const char * myStrPtr = [myString UTF8String];