【问题标题】:How to pass an NSString to a function that calls printf?如何将 NSString 传递给调用 printf 的函数?
【发布时间】:2016-06-19 02:47:11
【问题描述】:

我正在尝试将 NSString 和 args 列表传递给 printf,但编译器对 NSString 不是常量感到不满

我想要一个这样的功能:

+ (void)logFormat:(NSString *)format logArguments:(va_list)args {
    printf(format,args);
}

有没有办法标记参数 NSString 以使我正在尝试做的事情“安全”?

编辑:我尝试将参数声明为 const NSString * 但这也不起作用。

【问题讨论】:

  • 试试printf(format.UTF8String, args);。
  • @Avi 如果格式字符串中包含 '%@' 序列,则会失败。
  • 这不是因为printf() 的限制吗?换句话说,这不是与 OP 的方法无关的问题吗?

标签: ios objective-c c cocoa nsstring


【解决方案1】:

您需要使用NSString 的stringWithFormat:arguments: 创建一个完全格式化的NSString 对象,然后通过printf 写入该对象的内容。

由于它已完全格式化,您不妨直接通过fwrite() 将其转储到stdout 或使用NSFileHandle。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多