Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/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++ 处理utf8编码的字符*数组_C++_Unix_Suncc - Fatal编程技术网

C++ 处理utf8编码的字符*数组

C++ 处理utf8编码的字符*数组,c++,unix,suncc,C++,Unix,Suncc,文件包含非拉丁内容,并以UTF8编码。 目前,现有代码使用fopen打开文件,解析文件,并使用非拉丁语内容调用my validate函数,并将数据作为char*传递 我必须对传递的字符数组进行一些验证 应用程序使用Sun C++ 5.11,我认为它不支持Unicode。我在Sun C++ 5.11上搜索Unicode支持,但没有得到关于Unicode支持的任何正确的指针。所以我编写了一个简单的程序来检查Sun C++是否支持Unicode,程序没有编译。 如何对输入字符*进行验证?是否可以使用w

文件包含非拉丁内容,并以UTF8编码。 目前,现有代码使用fopen打开文件,解析文件,并使用非拉丁语内容调用my validate函数,并将数据作为char*传递

我必须对传递的字符数组进行一些验证

应用程序使用Sun C++ 5.11,我认为它不支持Unicode。我在Sun C++ 5.11上搜索Unicode支持,但没有得到关于Unicode支持的任何正确的指针。所以我编写了一个简单的程序来检查Sun C++是否支持Unicode,程序没有编译。 如何对输入字符*进行验证?是否可以使用wchar\t

这个应用程序使用了和,我认为它不支持unicode

这不是问题。您只需要编译器支持unicode就可以在代码中嵌入unicode字符串文字,或者支持固定宽度的字符类型来表示UTF-16或UTF-32。您的unicode是UTF-8,来自用户输入,因此不需要unicode编译器支持

如何对输入字符*进行验证

C++标准库中很少有处理Unicode的工具。提供的工具主要包括不同unicode格式之间的转换,甚至这些工具在C++11之前都不可用

输入和输出大多只是复制字节,因此不需要进行任何重要的处理。对于您可能需要验证的其他处理,您需要自己实现这些工具,或者使用第三方工具。如果您选择自行实施,则需要参考unicode标准的~1000页:

是否可以使用wchar\t


wchar\u t是用于系统的本机范围字符编码的本机范围字符类型。UTF-8不使用宽代码单元。

这完全取决于您所说的验证是什么意思。。。你应该如何验证文本?构建函数有什么要求?我必须验证特殊字符的存在。要求有一些非拉丁字符可与之比较,例如“Æ”、“Д,连续空白。也许可以帮你?出于安全原因,我不能使用第三方库…然后你可以使用将文本转换为与UTF-32相同的UCS-4。这会有帮助吗?我计划将无效字符列表存储在一个文本文件中,编码为utf8。然后将内容读取到一个char数组,然后对该数组进行验证。
void validate(const char* str)
{
    ....
}