之前的时候用Cini读写文本,发现写进去的东西有部分错误。后来手动写入一些字符提示“含unicode格式字符文档”,就想着把这些字符转成ANSI存储,尝试各种方法也没有解决。后来决定换个思路:把整份文本文件保存成unicode格式。
注意:txt的unicode格式保存的默认是小端保存
加头文件:
#include <fstream>
using namespace std;
在网上查资料,各种实现方法,下面这种是比较靠谱的,也是最后采用的方法。
1、读文本文件
wcstombs(_Dest, _Source, _Dsize); // 这种方式的wstring和string方式的转换会在此步骤中出现错误,会把ASCII中132(>128)的字符转换错误
std::string ws2s(const std::wstring& ws)
{
std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";
setlocale(LC_ALL, "chs");
const wchar_t* _Source = ws.c_str();
size_t _Dsize = 2 * ws.size() + 1;
char *_Dest = new char[_Dsize];
memset(_Dest, 0, _Dsize);
wcstombs(_De