博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unicode的ini文件(C++)
阅读量:5111 次
发布时间:2019-06-13

本文共 1696 字,大约阅读时间需要 5 分钟。

在写ini时,我们时常需要将一个ini文件写成Unicode的,此时的做法是在文件头前面写一个Unicode的标志量即可。

在下面代码中就可以写入一个Unicode的文件
    FILE *fp;
    fp = _tfopen(_T("e:\\sss.ini"), _T("r"));
    if (fp == NULL)
    {
        fp=_tfopen(_T("e:\\sss.ini"), _T("w+b"));
       
        wchar_t m_strUnicode[1];
        m_strUnicode[0] = wchar_t(0XFEFF);
        fputwc(*m_strUnicode,fp);
    }
    fclose(fp);
   
    WritePrivateProfileString(_T("test"), _T("test"), _T("哈哈,这次写的是一个unicode文件了"), _T("e:\\sss.ini"));
    CString str;
    GetPrivateProfileString(_T("test"), _T("test"), _T(""),str.GetBuffer(512), 512, _T("e:\\sss.ini"));

一般的情况下,我们可以封装一个函数,如下:

BOOL Unicode_WritePrivateProfileString(      LPCTSTR lpAppName, // section name
                                      LPCTSTR lpKeyName, // key name
                                      LPCTSTR lpString,   // string to add
                                      LPCTSTR lpFileName // initialization file
                                    )
{
    FILE *fp;
    fp = _tfopen(lpFileName, _T("r"));
    if (fp == NULL)
    {
        fp=_tfopen(lpFileName, _T("w+b"));

        wchar_t m_strUnicode[1];

        m_strUnicode[0] = wchar_t(0XFEFF);
        fputwc(*m_strUnicode,fp);
    }
    fclose(fp);

    return ::WritePrivateProfileString(lpAppName, lpKeyName, lpString, lpFileName);

}
这样就可以使用了。

 

 

在MFC中,也可以用类似的代码完成同样的功能,如下:

SetFileAttributes(inifile.c_str(), FILE_ATTRIBUTE_NORMAL);

//HANDLE hFile = CreateFile(inifile.c_str(),GENERIC_READ | GENERIC_WRITE,0,NULL,CREATE_ALWAYS|TRUNCATE_EXISTING,FILE_ATTRIBUTE_NORMAL ,NULL);
/*! CREATE_ALWAYS参数在存在这个文件时,会把这个文件给清空并打开,否则会创建一个文件,zzy */
HANDLE hFile = CreateFile(inifile.c_str(),GENERIC_READ | GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL ,NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
   /*! 将ini文件写成Unicode文件,zzy,11月20日 */
   wchar_t charUnicode = 0XFEFF;
   DWORD dwWrite = 0;
   WriteFile(hFile, &charUnicode, sizeof(charUnicode), &dwWrite, NULL);
   CloseHandle(hFile);
}

转载于:https://www.cnblogs.com/ywangzi/archive/2012/08/30/2663423.html

你可能感兴趣的文章
Red and Black(poj-1979)
查看>>
分布式锁的思路以及实现分析
查看>>
vue v-for下图片src显示失败,404错误
查看>>
腾讯元对象存储之文件删除
查看>>
jdk环境变量配置
查看>>
Hbase basic
查看>>
安装 Express
查看>>
包含列的索引:SQL Server索引的阶梯级别5
查看>>
myeclipse插件安装
查看>>
浙江省第十二届省赛 Beauty of Array(思维题)
查看>>
NOIP2013 提高组 Day1
查看>>
个人对vue生命周期的理解
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
转】MyEclipse使用总结——MyEclipse文件查找技巧
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>