簡體   English   中英

在C / C ++(ms)中將char []轉換為/從tchar []的最簡單方法是什么?

[英]What is the simplest way to convert char[] to/from tchar[] in C/C++(ms)?

這似乎是一個非常柔軟的問題,但我總是很難查找這個函數,因為似乎有很多關於char和tchar的引用的變化。

最簡單的方法是使用轉換宏:

  • CW2A
  • CA2W
  • 等等...

MSDN

TCHAR是特定於Microsoft的typedef,用於char或wchar_t(寬字符)。

轉換為char取決於它實際上是哪一個。 如果TCHAR實際上是一個char,那么你可以做一個簡單的轉換,但如果它真的是一個wchar_t,你需要一個例程來在字符集之間進行轉換。 查看函數MultiByteToWideChar()

這篇文章也有一些答案,特別是如果你正在尋找一個跨平台的解決方案:

UTF8到/來自STL中的寬字符轉換

雖然在這種特殊情況下,我認為TChar是一個廣泛的角色,如果不是,我只需要進行轉換。 我得以某種方式檢查。

if (sizeof(TCHAR) != sizeof(wchar_t))
{  .... }

很酷的是,equals的大小都是常量,這意味着編譯器將處理(並刪除)if(),如果它們相等,則刪除大括號內的所有內容

以下是將_TCHAR * argv []復制到char * argn []的CPP代碼。

http://www.wincli.com/?p=72

如果您將舊代碼應用於Windows,則可以使用代碼中提到的簡單定義作為可選。

你可以在你的代碼中加入條件

ifdef _UNICODE

{//像TCHAR一樣寬大的問候}以及{//做像TCHAR是CHAR}

我意識到這是一個老線程,但它並沒有讓我得到“正確”的答案,所以我現在就加入它。

現在看來這樣做的方法是使用TEXT宏。 msdn的FindFirstFile示例指出了這一點。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx

暫無
暫無

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

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