平台的方式来编写Unicode文件
我在Windows上使用Boost 1.60.0,但我正在编写一个跨平台的程序。 我正在尝试将文件名保存到一个文件中,然后再读出来。 该文件可能是文本或二进制文件,其编码无关紧要。 我使用boost :: filesystem :: directory_iterator通过迭代目录来获取文件名。
文件名可能包含Unicode字符,我找不到跨平台的方式来编写或读取它们。
在Linux上,我可以通过使用boost :: filesystem :: path类的<<和>>运算符来实现withstream和ifstream。
然而,在Windows上,我需要使用wofstream和wifstream,并使用UTF-8语言环境来灌输它们,如下所示:
std::wofstream outFile("./outfile");
boost::locale::generator gen;
outFile.imbue(gen("UTF-8"));
然后使用<<和>>运算符。
所以,我目前对Windows和Linux有不同的代码,但我更喜欢一个不需要我为不同系统编写不同代码的解决方案。
链接地址: http://www.djcxy.com/p/9259.html