程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> VC中char和TCHAR的數據類型轉換

VC中char和TCHAR的數據類型轉換

編輯:關於VC++

char:計算機編程語言(c、c++、java、VFP等)中可容納單個字符的一種基本數據類型。

TCHAR:為了滿足Unicode編碼,對char的擴展,即_T(“str”)表示TCHAR類型

C++支持 兩種字符串,即常規的ANSI編碼(使用""包裹)和Unicode編碼(使用L""包裹) ,這樣對應的就有了兩套字符串字符串處理函數,比如:strlen和wcslen,分別用於處理兩種字符串 char和TCHAR類型

winnt.h頭文件中:

    typedef WCHAR TCHAR, *PTCHAR;

表明 TCHAR 與 WCHAR 屬同一類型

char szA[100];                    // ANSI string buffer

WCHAR szW[100];            // Unicode string buffer

// Normal sprintf:all strings are ANSI

sprintf(szA, "%s","ANSI Str");

// Converts Unicode string to ANSI

sprintf(szA,"%S",L"Unicode Str");

// Normal swprintf:all strings are Unicode

swprintf(szW,L"% s",L"Unicode Str");

// Converts ANSI string to Unicode

swprintf(szW,L"%S", "ANSI Str");

注意:大寫S 和小 寫s 的使用

應用實例:通過system函數程序調用啟動msc程序

void 

WSUS::OnBnClickedOk()      
{
    CString strPath = NULL;     // 申請路徑字符串(TCHAR)
    char strChar[256];  // 申請路徑字符串(char)

    m_CustomEdit.GetWindowTextW(strPath);   // 獲取路徑存儲到strPath

    strPath.Replace(_T("\\"), _T("\\\\"));	// 替換strPath中"\"為"\\",注意轉換符
    //sprintf(strChar, "%s %S", "mmc.exe", strPath);        // TCHAR轉換char類型
    sprintf(strChar, "mmc.exe \"%S\"", strPath);        // TCHAR轉換char類型

    MessageBox(strPath, _T("title"));
    system(strChar);                        // 系統函數調用啟動msc程序

    //WinExec((LPCSTR)_bstr_t(strPath), SW_SHOW);   // 調用exe程序
}

示例步驟:

1、獲取msc程序路徑strPath

2、替換strPath中"\"為"\\"字符

C:\Windows\System32\gpedit.msc

首先,通過 strPath.Replace(_T("\\"), _T("\\\\")); 轉換成:

C:\\Windows\\System32\\gpedit.msc

然後,通過 sprintf(strChar, "%s %S", "mmc.exe", strPath); 拼接字符 串為:

mmc.exe C:\\Windows\\System32\\gpedit.msc

3、system函數調用啟動msc程序

system(strChar);

4、啟動結果如下

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved