【问题标题】:Convert a CFStringRef to a C string?将 CFStringRef 转换为 C 字符串?
【发布时间】:2011-02-10 17:49:15
【问题描述】:

你好可爱的电脑人:

我想将以下 CFStringRef 转换为 CString。知道怎么做吗?

recordFilePath = (CFStringRef)[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.wav"];

谢谢!


编辑 1

DarkDust 的答案似乎很接近,但我仍然收到错误消息(请参阅评论)。有什么帮助吗?

【问题讨论】:

  • 这是objective-c,对吧?标签应该是固定的。

标签: objective-c c cfstring


【解决方案1】:

一个简单的解决方案:

CFStringGetCString(myCFStringRef, myCStringPointer, mySize, myEncoding);

查看此功能:

Boolean CFStringGetCString (
   CFStringRef theString,
   char *buffer,
   CFIndex bufferSize,
   CFStringEncoding encoding
);

【讨论】:

    【解决方案2】:

    由于CFStringRef 可以免费转换为NSString,您可以这样做:

    myCString = [(NSString *)myCFStringRef UTF8String];
    

    或者在你的情况下:

    myCString = [[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.wav"] UTF8String];
    

    【讨论】:

    • hmmmmm...我不确定我是否在这里遗漏了什么。那不是一个NSString吗?我正在寻找一个 c 字符串。像 char newString [] =.
    • 这就是UTF8String 方法给你的,一个空终止的c-string。
    • 我得到 'myCString 未在此范围内声明' :(
    • @Eric Brotto:这只是一个占位符变量名。
    • 知道了!我错过了 const char * myCString。谢谢大家!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多