MFC下用CFile类进行文件的写入

本文详细介绍如何使用CFile类在MFC环境下正确地写入包含中文字符的文本文件。通过设置locale为chs,确保了文件能够以中文格式保存,避免了乱码问题。文章提供了完整的代码示例,包括文件的创建、中文字符串的写入以及locale的恢复。

因为CFile类默认是英文写入文件,所以如果不设置的话是不会在文件中写入中文的。

需要进行以下设置:

//需加头文件

#include <locale>   

    //确保能读写中文
    TCHAR* old_locale = _tcsdup( _tsetlocale(LC_CTYPE,NULL) );
    _tsetlocale( LC_CTYPE, _T("chs"));

     //在CFile创建对象之前

**********************************************************************************************************************************

//**假设的中间内容**
    CStdioFile   fTxtFile( strfileRoad, CFile::modeCreate|CFile::typeText|CFile::modeReadWrite );

//(写入的文件路径, 没有就新创造| 文本模式| 可读可写模式)

// 这是创建对象同时初始化

    fTxtFile.WriteString( _T("点胶位文件\n\n") );
    fTxtFile.WriteString(_T("序号\t 名称\t X轴\t Y轴\t 速度\t 加速度\t 终点速度\t 延时时间\t 点类型\t 运动模板\t 备注\t\n\n") );
    while( p ){
        
        str.Format( _T("%d\t %s\t %d\t %d\t %f\t %f\t %f\t %d\t %d\t %d\t %s\n"),p->data.iOrdinalNum, p->data.strSymbolName,  p->data.iPluX,
            p->data.iPluY,  p->data.dTarVel,  p->data.dTarAcc,  p->data.dTerminalVel,  p->data.iDelayTime,  p->data.iPointType,
            p->data.iPointModel,  p->data.strRemark );

        fTxtFile.WriteString( str );

        p = p->pNext;
    }

*************************************************************************************************************************************

 

   //确保能读写中文功能,注意要在此释放
    _tsetlocale( LC_CTYPE, old_locale );
    free( old_locale );

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值