在win32 api程式中 使用C 風格的字串

2021-04-07 13:24:46 字數 716 閱讀 8228

初學win32 api程式設計的人,通常對於c語言的字串和數字轉換感到比較頭痛。尤其像我這樣只學過c++,卻不諳c語言的標準庫的人,使用起char*和atoi()來實在是如履薄冰

所以我總琢磨著在api程式裡用上c++標準庫里的string。經過一番折騰發現還是可以的。

以下進入正題:

首先我們知道windows為了解決unicode的問題,定義了乙個tchar的typedef,會根據是否使用unicode來定義成char 或者 wchar_t。所以如果我們直接使用stl預定義的string型別的話就會有問題,因為string裡儲存的是char。

所以我們必須使用以下形式來定義乙個用於api程式的字串:

basic_stringstr;

這樣str裡儲存的字元也會根據unicode的定義與否而變為相應的char或wchar_t。

我們來看乙個在textout中使用的例子:

textout(hwnd,0,0,str.c_str(),str.length());

因為textout函式還是需要乙個tchar* 型別的引數,所以我們要呼叫str的c_str()成員函式來獲得乙個c風格的字串。

使用basic_string的最大好處是你可以任意拷貝、合併、擷取字串而不需要使用strcpy之類函式的unicode相容性問題。

另外乙個重大的好處是我們還可以從而拋棄atoi(),而轉投c++風格的數字->字串 轉換,不過現在來不及了 下回再講

掃雷程式 win32API

1 已實現功能 基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改 2 未實現功能 控制台顯示剩餘標旗數量和當前所用時間,選單項的豐富 3 基本原理 使用一張二維int表儲存每個方格的數字資訊,其中9表示雷 將整個雷區 客戶區 按難度分割成方格,每個方格為乙個靜態控制項,用...

在C 中讀寫INI檔案 WIN32 API

dllimport kernel32 private static extern long getprivateprofilestring string section,string key,string def,stringbuilder retval,intsize,string filepat...

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...