提问者:小点点

ascii和unicode在处理级别上有什么区别吗?


假设我有这样一个函数

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构建一个类,以便class class可以同时用于Unicode和ASCII。

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

编辑:

处理级是指对字符串执行追加,打印,从文件中提取字符串等操作。

我提出这个问题的原因是std::string和std::wstring是basic_string的typedef版本,具有char和wchar_t

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

在这两种情况下,差异只是记忆。

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


共2个答案

匿名用户

ascii和unicode之间有什么区别吗

是的。 它们是不同的编码而不是相同的。 因此,有不同之处。

这个函数可以同时用于ASCII和Unicode吗

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

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

但是,如果您想从终端读取输出,这取决于终端的功能和配置,它使用哪种编码来显示输出。 如果它与您正在打印的内容不匹配,那么输出可能会被曲解。

匿名用户

这个对类似问题的回答https://stackoverflow.com/a/50407375/1353434有一个很好的概述。 TL;DR版本是复杂的。