Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++ 将宽字符串或宽字符数组转换为简单字符数组的最简单方法?_C++_Arrays_Widestring_Character Arrays - Fatal编程技术网

C++ 将宽字符串或宽字符数组转换为简单字符数组的最简单方法?

C++ 将宽字符串或宽字符数组转换为简单字符数组的最简单方法?,c++,arrays,widestring,character-arrays,C++,Arrays,Widestring,Character Arrays,我的变量位于宽字符串的特定内部实现中,但我可以很容易地将其转换为宽字符数组。问题是我需要将它提供给一个只接受字符数组的库函数 因此,我最终得到了如下结果: wchar_t* wstr; // char* str = "need some processing here"; function(str); 那么,有没有一种简单的方法,或者我应该一个字符一个字符地手动执行呢?char*可能意味着很多事情。如果采用char*的函数实际上采用UTF8,则有几种方法可以将UTF16或UTF32转换为U

我的变量位于宽字符串的特定内部实现中,但我可以很容易地将其转换为宽字符数组。问题是我需要将它提供给一个只接受字符数组的库函数

因此,我最终得到了如下结果:

wchar_t* wstr;

// char* str = "need some processing here";

function(str);

那么,有没有一种简单的方法,或者我应该一个字符一个字符地手动执行呢?

char*可能意味着很多事情。如果采用char*的函数实际上采用UTF8,则有几种方法可以将UTF16或UTF32转换为UTF8。wchar__t通常用于存储UTF16(windows)或UTF32(macosx)以及其他电子编码

在这里查看ConvertUTF.c/.h


这在一定程度上取决于您试图对结果做什么以及原始文件包含什么。如果您只想处理ASCII字符,则需要
std::ctype::窄()。如果函数需要多字节编码,则需要类似于
wcstombs()的内容。请注意,后者通常不被视为字符,而是字节序列。这似乎对我有效,尽管我找到了一个更好的解决方案,不需要这种转换。但无论如何,谢谢。我怎么知道它是否需要UTF-8?简单地说,UTF8是编码字符数组以表示大多数字符/字母/符号等的多种方法之一。。。在大多数语言中。它可能是最受欢迎的。如果要调用某个库定义的函数,请查看文档以了解它需要什么类型的char*。许多流行的API都希望char*是UTF8。如果您知道您的wchar\u t输入永远只能是英文字符(ascii代码32到127),那么您可以使用上述库将wchar\u t转换为char*,因为这些字符在所有char*编码方案中都有效。