Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将std::u16string转换为NSString_C++_Ios_Objective C - Fatal编程技术网

C++ 将std::u16string转换为NSString

C++ 将std::u16string转换为NSString,c++,ios,objective-c,C++,Ios,Objective C,在我的本机库中,我使用此函数从std::string返回NSString: - (NSString*)return_my_cpp_string { NSString* result = [NSString stringWithCString:my_cpp_string.c_str() encoding:[NSString defaultCStringEncoding]]; return result; } 我现在需要更新此函数,以便它从std::u16string中返回NSSt

在我的本机库中,我使用此函数从
std::string
返回
NSString

- (NSString*)return_my_cpp_string {
    NSString* result = [NSString stringWithCString:my_cpp_string.c_str() encoding:[NSString defaultCStringEncoding]];
    return result;
}
我现在需要更新此函数,以便它从
std::u16string
中返回
NSString
,但我找不到任何明显的方法来执行此操作。

使用而不是
stringWithCString:encoding

stringWithCharacters
将指向UTF-16代码单元的C样式数组的指针作为输入
std::u16string
是一个UTF-16编码字符串,因此您可以按原样使用其数据,例如:

- (NSString*)return_my_cpp_string {
    const unichar *pchars = (const unichar *) my_cpp_string.c_str();
    NSString* result = [NSString stringWithCharacters:pchars length:my_cpp_string.size()];
    return result;
}

我得到一个
无法初始化一个类型为“const unichar*\u Nonnull”(又名“const unsigned short*)的参数,它的右值类型为“const std:::\uu 1::basic_string::value_type*”(又名“const char16\u t*”)
错误我可以用
(const unichar*)
强制转换来解决这个问题,它可以正常工作-如果可以的话,只是徘徊?@MarinosK yes,这就是你需要做的。我已经更新了我的答案。