我的一个纯文本的ini文件中内容如下:
Text=it is ok
Num=501.如何能取出it is ok赋给一个CString对象
2.如何取出50赋给int对象?
3.需要用到什么类,用到什么方法呢?
4.如果要重新再写新的值到里面应该怎么做呢?应该用搜索吗?
5.用ini文件这样保存设定值合适吗?
6.是否要在每句话后面加上分号?你熟悉的朋友指点一下。

解决方案 »

  1.   

    如果是标准的INI,可以用以下的函数
    GetPrivateProfileString()
    GetPrivateProfileint()
    如果不是,可以自己写一下,也很容易。标准的INI例子[服务端设置]
    IP = xxx.xx.xx.x
    Port = xxxxx
      

  2.   

    如果是标准的INI,可以用以下的函数
    GetPrivateProfileString()
    GetPrivateProfileint()
    如果不是,可以自己写一下,也很容易。标准的INI例子[服务端设置]
    IP = xxx.xx.xx.x
    Port = xxxxx
      

  3.   

    WritePrivateProfileString
    The WritePrivateProfileString function copies a string into the specified section of the specified initialization file. This function is provided for compatibility with 16-bit Windows-based applications. WIn32-based applications should store initialization information in the registry. BOOL WritePrivateProfileString(
      LPCTSTR lpAppName,  // pointer to section name
      LPCTSTR lpKeyName,  // pointer to key name
      LPCTSTR lpString,   // pointer to string to add
      LPCTSTR lpFileName  // pointer to initialization filename
    );
     
      

  4.   

    The GetPrivateProfileString function retrieves a string from the specified section in an initialization file. This function is provided for compatibility with 16-bit Windows-based applications. Win32-based applications should store initialization information in the registry. DWORD GetPrivateProfileString(
      LPCTSTR lpAppName,        // points to section name
      LPCTSTR lpKeyName,        // points to key name
      LPCTSTR lpDefault,        // points to default string
      LPTSTR lpReturnedString,  // points to destination buffer
      DWORD nSize,              // size of destination buffer
      LPCTSTR lpFileName        // points to initialization filename
    );
     
      

  5.   

    我写的CINI类,你可以加进去用一下////////////////////////////////////////////////////////////////////////////////////////
    // Filename          : INI.h
    // Class Information : CINI v1.0
    //                     Copyright(c) By Wildcat Studio.Li 2002.6 China
    //                     E-mail : [email protected]   QQ : 21021078
    // Notice            : X
    ////////////////////////////////////////////////////////////////////////////////////////#if !defined(AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_)
    #define AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000class CINI  
    {
    public:
    BOOL DeleteKey(CString csSectionName, CString csKeyName);
    BOOL AddKey(CString csSectionName, CString csKeyName,CString csKeyValue);
    void Close();
    BOOL WriteINIFile();
    BOOL SetKeyValue(CString csSectionName, CString csKeyName,CString csKeyValue);
    CString GetKeyValue(CString csSectionName,CString csKeyName);
    void SetSensitivityChar(char cReChar,char cEvaluateChar,char cSectionLeftChar,char cSectionRightChar);
    BOOL ReadINIFile(CString csINIFilename);
    CINI();
    virtual ~CINI();private:
    CString m_csINIFilename;
    CStringArray m_csaSectionKeys;
    char m_cSectionRightChar;
    char m_cSectionLeftChar;
    char m_cEvaluateChar;
    char m_cReChar;
    protected:
    int FindKeyPosition(CString csSectionName,CString csKeyName);
    int FindSectionPosition(CString csSectionName);
    };#endif // !defined(AFX_INI_H__579180A1_A60C_4B9E_AC59_F4C90FA54B28__INCLUDED_)
    ////////////////////////////////////////////////////////////////////////////////////////
    // Filename          : INI.cpp
    // Class Information : CINI v1.0
    //                     Copyright(c) By Wildcat Studio.Li 2002.6 China
    //                     E-mail : [email protected]   QQ : 21021078
    // Notice            : X
    ////////////////////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "INI.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////CINI::CINI()
    {
    m_cReChar=0;
    m_cEvaluateChar=0; m_cSectionLeftChar=0;
    m_cSectionRightChar=0;
    }CINI::~CINI()
    {
    m_cReChar=0;
    m_cEvaluateChar=0; m_cSectionLeftChar=0;
    m_cSectionRightChar=0; m_csaSectionKeys.RemoveAll();
    }BOOL CINI::ReadINIFile(CString csINIFilename)
    {
    CStdioFile csf;
    CString csLine; if(!csf.Open(csINIFilename,CFile::modeRead | CFile::typeText))
    return FALSE; m_csINIFilename=csINIFilename; m_csaSectionKeys.RemoveAll(); while(csf.ReadString(csLine)!=NULL){
    m_csaSectionKeys.Add(csLine);
    } csf.Close(); return TRUE;
    }void CINI::SetSensitivityChar(char cReChar, char cEvaluateChar, char cSectionLeftChar, char cSectionRightChar)
    {
    m_cReChar=cReChar;
    m_cEvaluateChar=cEvaluateChar; m_cSectionLeftChar=cSectionLeftChar;
    m_cSectionRightChar=cSectionRightChar;
    }CString CINI::GetKeyValue(CString csSectionName, CString csKeyName)
    {
    if(m_csINIFilename=="")
    return ""; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
    return ""; return m_csaSectionKeys.GetAt(i).Right(m_csaSectionKeys.GetAt(i).GetLength()-m_csaSectionKeys.GetAt(i).Find(m_cEvaluateChar)-1);
    }BOOL CINI::SetKeyValue(CString csSectionName, CString csKeyName, CString csKeyValue)
    {
    if(m_csINIFilename=="")
    return FALSE; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
    return FALSE; m_csaSectionKeys.SetAt(i,m_csaSectionKeys.GetAt(i).Left(m_csaSectionKeys.GetAt(i).Find(m_cEvaluateChar))+m_cEvaluateChar+csKeyValue); return TRUE;
    }BOOL CINI::WriteINIFile()
    {
    CStdioFile csf; CFile::Remove(m_csINIFilename); if(!csf.Open(m_csINIFilename,CFile::modeCreate | CFile::modeWrite | CFile::typeText))
    return FALSE; for(int i=0;i<m_csaSectionKeys.GetSize();i++)
    csf.WriteString(m_csaSectionKeys.GetAt(i)+'\n'); csf.Close(); return TRUE;
    }void CINI::Close()
    {
    m_csINIFilename=""; m_csaSectionKeys.RemoveAll();
    }BOOL CINI::AddKey(CString csSectionName, CString csKeyName, CString csKeyValue)
    {
    if(m_csINIFilename=="")
    return FALSE; int i=FindSectionPosition(csSectionName); if(i==-1){
    m_csaSectionKeys.Add(m_cSectionLeftChar+csSectionName+m_cSectionRightChar);
    m_csaSectionKeys.Add(csKeyName+m_cEvaluateChar+csKeyValue);
    }else
    m_csaSectionKeys.InsertAt(i+1,csKeyName+m_cEvaluateChar+csKeyValue,1); return TRUE;
    }BOOL CINI::DeleteKey(CString csSectionName, CString csKeyName)
    {
    if(m_csINIFilename=="")
    return FALSE; int i=FindKeyPosition(csSectionName,csKeyName); if(i==-1)
    return FALSE; m_csaSectionKeys.RemoveAt(i); return TRUE;
    }int CINI::FindSectionPosition(CString csSectionName)
    {
    CString csNowLine; for(int i=0;i<m_csaSectionKeys.GetSize();i++){
    csNowLine=m_csaSectionKeys.GetAt(i); if(csNowLine.Left(1)==m_cReChar)
    continue; if(csNowLine.Left(1)==m_cSectionLeftChar && csNowLine.Right(1)==m_cSectionRightChar && csNowLine.Mid(1,csNowLine.GetLength()-2)==csSectionName)
    return i;
    } return -1;
    }int CINI::FindKeyPosition(CString csSectionName, CString csKeyName)
    {
    CString csNowSectionName,csNowLine; for(int i=0;i<m_csaSectionKeys.GetSize();i++){
    csNowLine=m_csaSectionKeys.GetAt(i); if(csNowLine.Left(1)==m_cReChar)
    continue; if(csNowLine.Left(1)==m_cSectionLeftChar && csNowLine.Right(1)==m_cSectionRightChar)
    csNowSectionName=csNowLine.Mid(1,csNowLine.GetLength()-2); if(csNowLine.Left(csNowLine.Find(m_cEvaluateChar))==csKeyName && csNowLine.Find(m_cEvaluateChar)!=-1 && csNowSectionName==csSectionName)
    return i;
    } return -1;
    }