【问题标题】:There is any difference between ascii and unicode at processing level?ascii 和 unicode 在处理级别上有什么区别吗?
【发布时间】:2020-10-23 04:52:22
【问题描述】:

假设我有一个类似的功能

template<typename charT>
void fun(std::basic_ostream<charT>&  out, std::basic_fstream<charT>& file)
{
    std::basic_string<charT> str;

    file>>str;
    out<<str;
}

注意:文件编码为 utf-8

我不了解 Unicode。我可以将此函数用于 ASCII 和 Unicode,或者使用 basic_type 构建一个类,以便类类可以用于 Unicode 和 ASCII。

我的问题是 ASCII 和 Unicode 在处理级别上有什么区别吗?

编辑:

处理级别意味着对该字符串进行操作,例如追加、打印和从文件中获取字符串。

为什么我问这个问题是 std::string 和 std::wstring 是具有 char 和 wchar_t 的 basic_string 的 typedef ed 版本

并且 std::cout 和 std::wcout 是 std::basic_ostream 的 typedef ed 版本,具有 char 和 wchar_t 但两个代码相同。

在这两种情况下,区别只是记忆。

所以我使用 basic_type 构建了一个类,以便该类可用于 ASCII 和 Unicode。

【问题讨论】:

  • 是的。 ASCII 和 unicode 编码是不同的。我不知道您所说的“处理级别”是什么意思。
  • 有数以万计的 Unicode 字符可以编码为 UTF-8 但不能编码为 ASCII。如果您的文件包含其中之一,您究竟希望发生什么?
  • @eerorika 我的意思是对该字符串的处理(如追加)或打印它或从文件中获取一个字符串
  • 这里的问题不是对空白字符的解释吗? operator>> 取决于知道什么是空白字符,并且一些 unicode 空白字符具有多字节 UTF-8 编码。
  • C++ 并不真正支持 unicode。如果您想使用 unicode,我建议您使用类似 ICU 的库

标签: c++ unicode ascii


【解决方案1】:

ascii和unicode有什么区别

是的。它们是不同的编码,并不完全相同。因此,存在差异。

我可以对 ASCII 和 Unicode 使用这个函数吗

是的。对于 UTF-8(假设字节大小为 8 位)。

该函数不执行任何需要在这些编码之间进行不同处理的操作。

虽然,如果你想从终端读取输出,它取决于终端的功能和配置,它使用哪种编码来显示输出。如果它与您打印的内容不匹配,则输出可能会被误解。

【讨论】:

  • 感谢您的回答,您能看到已编辑的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多