MFC操作ini文件,Format函数大用处


CString的Format函数大用处-----整型值转为字符型和实现AfxMessageBox字符串或字符串和整型值连接,工具VS2010


//向Ini写入数据
void CMdSpi::TestWriteIni(){
    CString strName,strTemp,strIP;
    int nAge;
    strName = "张武";
    nAge = 15;
    strIP = "10.10.137.23";
    ::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stu\\stu.ini");

    //要将学生的年龄保存下来,只需将整型的值变为字符型即可:

    strTemp.Format("%d",nAge);
    ::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stu\\stu.ini");   

    ::WritePrivateProfileStringA("IPInfo","IPAddr",strIP,"c:\\ipinfo.ini");

    ::AfxMessageBox("写入成功!!!!");
}

//从Ini文件中Get数据,执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".
void CMdSpi::TestGetIni(){
    
    CString strStuName,strIP,str,strAdd;
    int nStuAge;
    ::GetPrivateProfileString("StudentInfo","Name","默认姓名",strStuName.GetBuffer

(MAX_PATH),MAX_PATH,"c:\\stu\\stu.ini");
    strStuName.ReleaseBuffer();

    nStuAge = ::GetPrivateProfileIntA("StudentInfo","Age",0,"c:\\stu\\stu.ini");
    strAdd.Format("%s %d","从ini文件中读取整型数:",nStuAge);
    ::AfxMessageBox(strAdd);

    ::GetPrivateProfileStringA("IPInfo","IPAddr","默认IP",strIP.GetBuffer

(MAX_PATH),MAX_PATH,"c:\\ipinfo.ini");
    strIP.ReleaseBuffer();

//    ::AfxMessageBox("从ini文件中读取信息:" + strStuName); 参数中的字符串是不能相加的
    ::AfxMessageBox(strStuName);
    str = "从ini文件中读取IP地址:";
    strAdd.Format("%s %s",str,strIP);
    ::AfxMessageBox(strAdd);
}


Note:

1.WritePrivateProfileString()函数可以创建文件,但不能创建文件夹!即INI文件的路径必须完整,文件名前面的各级目录必须存在,否则写入不成功,该函数返回 FALSE 值.

2.调用完GetBuffer()后需要调用ReleaseBuffer()!


3.文件名的路径中必须为 \\ ,因为在VC++中, \\ 才表示一个 \ .

4.也可将INI文件放在程序所在目录,此时 lpFileName 参数为: ".\\stu.ini".


PS:

有必要了解INI文件的结构:
;注释
[小节名]
关键字=值
...
  INI文件允许有多个小节,每个小节又允许有多个关键字, "="后面是该关键字的值。
  值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,
布尔真值用1表示,布尔假值用0表示。
  注释以分号";"开头。


你可能感兴趣的:(ini,mfc,VS2010,CString)