假设我有这样一个函数
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。
ascii和unicode之间有什么区别吗
是的。 它们是不同的编码而不是相同的。 因此,有不同之处。
这个函数可以同时用于ASCII和Unicode吗
是的。 对于UTF-8(假设字节大小为8位)。
该函数不执行需要在这些编码之间进行不同处理的任何操作。
但是,如果您想从终端读取输出,这取决于终端的功能和配置,它使用哪种编码来显示输出。 如果它与您正在打印的内容不匹配,那么输出可能会被曲解。
这个对类似问题的回答https://stackoverflow.com/a/50407375/1353434有一个很好的概述。 TL;DR版本是复杂的。