CFURLRef
を C++に変換するにはどうすればよいstd::string
ですか?
CFURLRef
次の方法で からに変換することもできますCFStringRef
。
CFStringRef CFURLGetString ( CFURLRef anURL );
しかし今、私は同じ問題を抱えています。CFStringRef
を に変換するにはどうすればよいstd::string
ですか?
CFURLRef
を C++に変換するにはどうすればよいstd::string
ですか?
CFURLRef
次の方法で からに変換することもできますCFStringRef
。
CFStringRef CFURLGetString ( CFURLRef anURL );
しかし今、私は同じ問題を抱えています。CFStringRef
を に変換するにはどうすればよいstd::string
ですか?
この関数は、おそらく最も単純なソリューションです。
const char * CFStringGetCStringPtr ( CFStringRef theString, CFStringEncoding encoding );
もちろん、 std::string(char*) の ctr があり、変換のためにこのワンライナーを提供します。
std::string str(CFStringGetCStringPtr(CFURLGetString(anUrl),kCFStringEncodingUTF8));
これを達成する最も安全な方法は次のとおりです。
CFIndex bufferSize = CFStringGetLength(cfString) + 1; // The +1 is for having space for the string to be NUL terminated
char buffer[bufferSize];
// CFStringGetCString is documented to return a false if the buffer is too small
// (which shouldn't happen in this example) or if the conversion generally fails
if (CFStringGetCString(cfString, buffer, bufferSize, kCFStringEncodingUTF8))
{
std::string cppString (buffer);
}
canのCFStringGetCString
ように NULL を返すことは文書化されていませんCFStringGetCStringPtr
。
正しいCFStringEncoding
タイプを使用していることを確認してください。ほとんどの場合、UTF8 エンコーディングは安全だと思います。
https://developer.apple.com/reference/corefoundation/1542721-cfstringgetcstring?language=objcCFStringGetCString
でApple のドキュメントを確認できます。