将CFStringRef转换为C字符串?

5

你好,亲爱的计算机人士:

我想将下面的CFStringRef转换为CString。有什么办法吗?

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

谢谢!


编辑1

DarkDust的回答似乎接近,但我仍然遇到错误(请参见评论)。有什么帮助吗?


这是 Objective-C,对吧?标签应该被修复。 - AShelly
2个回答

14

一个简单的解决方案:

CFStringGetCString(myCFStringRef, myCStringPointer, mySize, myEncoding);

看看这个函数:

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

8

由于CFStringRef可以被强制转换为NSString,所以您可以简单地执行以下操作:

myCString = [(NSString *)myCFStringRef UTF8String];

或者在你的情况下:
myCString = [[NSTemporaryDirectory() stringByAppendingPathComponent: @"recordedFile.wav"] UTF8String];

嗯……我不确定我是否漏掉了什么。那不是一个NSString吗?我正在寻找一个C字符串。像char newString [] =这样的。 - Eric Brotto
2
这就是 UTF8String 方法给你的,一个以空字符结尾的 C 字符串。 - kubi
我得到了“myCString在此范围内未声明”的错误 :( - Eric Brotto
1
@Eric Brotto:这只是一个占位符变量名。 - Chuck
明白了!我漏掉了 const char* myCString。谢谢大家! - Eric Brotto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接