.ini文件 緩存用戶的 登錄信息

記在前面

\qquad在做完一個登錄頁面之後,之後在每次調試的時候,都需要輸入各種登錄信息就很麻煩,經點撥,Windows下面有.ini文件,可以存儲登錄信息,下次打開登錄的時候,直接顯示,不用再輸入了。這個文件也用於初始化一個程序。百度百科 .ini文件。
ini文件相關的函數。

保存登錄信息

\qquad我設計的思路是,一旦選擇了登錄,就判斷有沒有記錄登錄信息的.ini文件,如果沒有,就新建一個文件,如果有,就把文件裏面的信息放到我的輸入對話框。相關的操作很簡單的,隨便搜搜就有了。
這裏記錄幾個操作相關的函數。

USES_CONVERSION;
LPCWSTR login_number=A2CW((LPCSTR)m_login_number);  //需要先將CString類型的數據轉換爲LPCWSTR類型。然後再傳參。
::WritePrivateProfileStringW(L"Login Info", L"login_number", login_number, L"D:\\MFCApplication3\\MFCApplication3\\MFCApplication3\\login.ini");
//這裏是因爲使用了xxW()函數,所以需要轉換成LPCWSTR.

//如果是整數的話,需要先用Format()函數轉換爲字符串。
strTemp.Format("%d", m_login_pwd);
LPCWSTR login_pwd = A2CW((LPCSTR)strTemp);
//然後再調用函數寫入ini文件裏面去。
//具體函數的形參和返回值,可以看上面的那個鏈接裏面的文檔。

我終於找到了官方的文檔。微軟的文檔。

DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,    //這個函數裏面的參數需要加_T宏。直接是CString也可以。
                        //CString==const char[]
  LPCTSTR lpKeyName,
  LPCTSTR lpDefault,
  LPTSTR  lpReturnedString,
  DWORD   nSize,
  LPCTSTR lpFileName
);
DWORD GetPrivateProfileStringA(
  LPCSTR lpAppName,     //這個函數裏面的參數直接是CString就行了。
  LPCSTR lpKeyName,
  LPCSTR lpDefault,
  LPSTR  lpReturnedString,
  DWORD  nSize,
  LPCSTR lpFileName
);
DWORD GetPrivateProfileStringW(
  LPCWSTR lpAppName,  //我使用的是這個函數,改成LPCWSTR類型。寬的。是const wchar_t.
  LPCWSTR lpKeyName,
  LPCWSTR lpDefault,
  LPWSTR  lpReturnedString,
  DWORD   nSize,
  LPCWSTR lpFileName
);

關於字符:

//LPSTR 相當於TCHAR *,
//LPCTSTR 相當於const TCHAR *.
//如果當前編譯方式爲ANSI(默認)方式,TCHAR等價於CHAR,如果爲Unicode方式,TCHAR等價於WCHAR

這個博客對這三者的解釋很清楚。

TCHAR
\qquad因爲C++支持兩種字符串,即常規的ANSI編碼(使用"“包裹)和Unicode編碼(使用L”“包裹),這樣對應的就有了兩套字符串處理函數,比如:strlen()和wcslen(),分別用於處理兩種字符串。微軟將這兩套字符集及其操作進行了統一,通過條件編譯(通過_UNICODE和UNICODE宏)控制實際使用的字符集,這樣就有了_T(”")這樣的字符串,對應的就有了_tcslen()這樣的函數。爲了存儲這樣的通用字符,就有了TCHAR.當我們定義了UNICODE宏,就相當於告訴了編譯器:我準備採用UNICODE版本。這個時候,TCHAR就會搖身一變,變成了wchar_t。而未定義UNICODE宏時,TCHAR搖身一變,變成了unsigned char。這樣就可以很好的切換寬窄字符集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章