我有以下代码将String转换为CFString并反向转发:
string path = @"C:\Users\ayi\Desktop\Failed\AngryBirds.ipa";
IntPtr p_path = __CFStringMakeConstantString(path);
CoreFoundation.CFString cfstring = new CoreFoundation.CFString(p_path);
string result = cfstring.ToString();
问题是path != result
,其中path
包含一些中文字符,例如@"C:\Users\ayi\Desktop\中文\AngryBirds.ipa";
如何在C#中将包含中文的字符串转换为cfstring?
答案 0 :(得分:0)
您可以使用 CFStringCreateWithCString
函数将类似 c 的字符串转换为 CFString:
CFStringCreateWithCString(kCFAllocatorDefault, myCString, kCFStringEncodingUTF8);
然后您需要弄清楚如何将 C# 字符串转换为类似 c 的字符串。不幸的是,我不是 C# 开发人员,所以这里有一个看起来不错的链接:
C++ .NET convert System::String to std::string
注意:使用 std::string::c_str()
将 C++ 字符串转换为类似 c 的字符串 myCppString.c_str()
。这个操作主要是访问内存,所以速度很快。