0

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

void validate(const char* str)
{
    ....
}

我必须对传递的char数组进行一些验证。

该应用程序使用Sun C++ 5.11并且我认为不支持unicode. (我在 Sun C++ 5.11 上搜索了 unicode 支持,我没有得到任何关于 unicode 支持的正确指示。所以我编写了一个简单的程序来检查 Sun C++ 是否支持 unicode 并且程序没有编译)。

如何对输入进行验证char*?可以使用wchar_t吗?

4

1 回答 1

1

该应用程序使用<compiler>并且我认为不支持 unicode

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

如何对输入进行验证char*

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

输入和输出大多只是字节的复制,因此不需要进行大量处理。对于其他处理(您可能需要“验证”),您需要自己实施工具,或使用第三方工具。如果您选择自己实现,您将需要参考大约 1000 页的 unicode 标准:http ://www.unicode.org/versions/Unicode9.0.0/UnicodeStandard-9.0.pdf

可以使用wchar_t吗?

wchar_t是用于系统的本机宽字符编码的本机宽字符类型。UTF-8 不使用宽代码单元。

于 2017-02-14T11:04:58.407 回答