如何将CFString转换为HFSUniStr255?

时间:2014-09-14 14:33:07

标签: c++ c macos macos-carbon codewarrior

首先,这与古代技术有关。我正在研究的程序端口是在Metrowerks Codewarrior 9中维护的,目标是PPC。

用于MSL C的FSRefParentAndFilename_fopen函数

FILE * FSRefParentAndFilename_fopen(
const FSRefPtr theParentRef,
ConstHFSUniStr255Param theName,
const char *open_mode);

我需要一个ConstHFSUniStr255Param,它是一个指向HFSUniStr255的指针。 我有一个包含我的文件名的CFString,我的问题是如何转换为HFSUniStr255?

struct HFSUniStr255 {
UInt16 length;
UniChar unicode[255];
};

到目前为止,我有:

HFSUniStr255 HFSString;
FSGetDataForkName(&HFSString);
HFSString.length=(uint16)CFStringGetLength(fileName);
HFSString.unicode=?

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码段:

HFSString.length=(uint16)CFStringGetLength(fileName);
CFStringGetCharacters(filename, CFRangeMake(0, CFStringGetLength(filename)), HFSString.unicode);

请确保您的文件名有效,特别是其长度小于255个Unicode字符。否则你将不得不面对缓冲区溢出的后果。