Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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/2/linux/27.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++ 传递基本字符串<;char16_t>;只接受wchar\u t*和char的方法*_C++_Linux_Windows_C++11 - Fatal编程技术网

C++ 传递基本字符串<;char16_t>;只接受wchar\u t*和char的方法*

C++ 传递基本字符串<;char16_t>;只接受wchar\u t*和char的方法*,c++,linux,windows,c++11,C++,Linux,Windows,C++11,当您只能获取存储在char16\u t的基本字符串中的值时,如何使用只接受char*和wchar\u t*的方法 例如,在cstdio中删除 cstdio中的remove函数只接受char*和wchar\u t* 无法将char16\u t转换为wstring: Char无法处理所有UTF-16字符 您需要将卡在std::basic_string中的UTF-16转换为以std::string或char const*为参数的任何函数所使用的正确编码。同样地,当针对基于wchar\t的序列时,您需

当您只能获取存储在char16\u t的基本字符串中的值时,如何使用只接受char*和wchar\u t*的方法

例如,在cstdio中删除

  • cstdio中的remove函数只接受char*和wchar\u t*
  • 无法将char16\u t转换为wstring:
  • Char无法处理所有UTF-16字符

您需要将卡在
std::basic_string
中的UTF-16转换为以
std::string
char const*
为参数的任何函数所使用的正确编码。同样地,当针对基于
wchar\t
的序列时,您需要更改编码。当然,由于人们已经抛弃了在内部处理字符而不是编码的想法,因此提供适当的设施来处理编码之间的变化是很有用的。处理字节和字符之间的编码/解码有两种方法,即
std::codevt
和多字节转换函数系列(例如
mbtowc()


合适的转换还取决于目标API:并非所有API都能够合理处理,例如UTF-8。转换可能涉及实际支持的字符的选择。

参考您链接到的同一个表:将UTF-16转换为多字节,将多字节转换为宽字符。@KerrekSB一些数据将在过程中丢失。当字符串包含例如ґ字符时,输出将无效还有。我想支持UTF 16,所以当发送UTF 16字符时,我希望能够使用该字符。wchar\u t和char16\u t都能够支持UTF-16。为什么我不能在不丢失数据的情况下从这些类型转换到这些类型?wcthume不适用于此,您将在windows上使用UTF-8。例如: