簡體   English   中英

C ++如何將wchar_t *轉換為TCHAR [](不是TCHAR *)

[英]C++ How can I convert wchar_t* to TCHAR [] (not TCHAR*)

我想在一個大單元中添加一些小的附加選項,所以我不想處理大量代碼。

TCHAR szTempFileName[MAX_PATH];
TCHAR lpTempPathBuffer[MAX_PATH];
int uRetVal = 0;
GetTempPath(MAX_PATH,          // length of the buffer
    lpTempPathBuffer); // buffer for path 
GetTempFileName(lpTempPathBuffer, // directory for tmp files
    TEXT("QRCode_"),     // temp file name prefix 
    0,                // create unique name 
    szTempFileName);  // buffer for name 

我想將szTempFileName更改為可選的wstring / std :: string / wchar_t * parametr。

解:

  1. 將TCHAR更改為wchar_t

  2. wcscpy(wchar_t [],wchat_t *);

通常,根本沒有理由使用TCHAR 如果仍然使用wchar_t ,只需添加一個W后綴即可直接調用Winapi函數的Unicode變體

// Use wchar_t instead of TCHAR.
wchar_t szTempFileName[MAX_PATH];
wchar_t lpTempPathBuffer[MAX_PATH];
int uRetVal = 0;
// Call GetTempPathW directly.
GetTempPathW(MAX_PATH, lpTempPathBuffer);
// Use L"..." instead of TEXT("...").
GetTempFileNameW(lpTempPathBuffer, L"QRCode_", 0, szTempFileName);

堅持使用現有內容,最后將其轉換為適當的字符串類型。 使Windows在C ++字符串類型中正確正確地播放可能會使您的頭發變灰。

使用以下typedef創建可在整個代碼中使用的字符串類型,而不是std :: string或std :: wstring:

typedef std::basic_string<TCHAR> tstring;

直接從緩沖區構造字符串:

tstring RealFileName(szTempFileName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM