您的位置:首页 > 其它

ifstream或ofstream读取二进制文本乱码问题

2013-08-20 13:27 2807 查看
一:中文文件名乱码问题:

1、使用C语言的函数设置为中文运行环境

setlocale(LC_ALL,"");

2、使用STL函数设置为系统语言环境

std::locale::global(std::locale(""));

// open file

std::locale::global(std::locale());

二:整型或者浮点型问题(比如“1000”,输出之后就成了“1,000”)

设置输出流的local为"C"即可,利用imbue()方法。

若输出流对象为a,则

a.imbue(std::locale("C"));

示例:

#include <fstream>

using namespace std;

bool Process(const char* dest,const char* src,LONG Offset,LONG Length)

{

locale::global(locale(""));

ifstream fin(src,ios::binary);

if(!fin)

{

return false;

}

fin.seekg(Offset);

ofstream fout(dest,ios::binary);

char* pbuf;

if (Length>0)

{

pbuf = new char[Length];

}

fin.imbue(locale("C"));

fin.read(pbuf,Length);

fout.write(pbuf,fin.gcount());

if (Length>0)

{

delete []pbuf;

}

fin.close();

fout.close();

locale::global(locale());

return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: