C++ c++;:如何将任何文件读入std::string

C++ c++;:如何将任何文件读入std::string,c++,file,utf-8,ucs2,ucs,C++,File,Utf 8,Ucs2,Ucs,我有一堆txt文件,想把它们读入std::string,其中一些是UCS-2,UTF-8编码的。如何将它们读入std::字符串。我只想将任何文本文件读入std::string。我必须转换它们吗?读取它们的方式取决于您的操作系统支持的内容和您使用的语言环境 如果你在文件中天真地阅读而不接触你的区域,并且它们的位置与你的STD C++库正在使用的区域不匹配,你可能会遇到困难。单字节与多字节字符集的类似问题 在读取文件之前,没有可靠的方法来判断文件的区域设置(元数据可能是错误的),因此一般策略是先尝试

我有一堆txt文件,想把它们读入std::string,其中一些是UCS-2,UTF-8编码的。如何将它们读入std::字符串。我只想将任何文本文件读入std::string。我必须转换它们吗?

读取它们的方式取决于您的操作系统支持的内容和您使用的语言环境

<>如果你在文件中天真地阅读而不接触你的区域,并且它们的位置与你的STD C++库正在使用的区域不匹配,你可能会遇到困难。单字节与多字节字符集的类似问题

在读取文件之前,没有可靠的方法来判断文件的区域设置(元数据可能是错误的),因此一般策略是先尝试以最常见的格式读取,然后在失败时重新尝试使用不同的格式(即遇到无效字符)。即便如此,它也可能模棱两可。这是一个令人难以置信的复杂问题,您在解析带有疯狂字符集的HTML时也遇到了同样的问题

通常,有两组文件I/O函数可用,一组用于多字节字符集,另一组用于单字节字符集。支持这个功能是非常特定于平台的,因此如果你使用的是一个没有特殊字符支持的英语本地化OS,那么多字节集合可能不直接被C++支持而不需要使用外部库。p> Microsoft指定cin和cout的非标准扩展。通过在它们前面加一个w,它们按字节宽度分隔流

wcout << "儫";

wcout读取文件后,您想对其执行什么操作?您想要文件的字节,还是想要字符,如果是字符,则使用什么编码。你必须对此作出决定。如果你想要角色,那就有点难看了。我得到了我认为是的BOM表,无法读取std::字符串的内容。如何将任何内容转换为UTF8?好的。我明白…但是我怎样才能把任何东西转换成UTF8呢?从UCS还是其他地方?