C / C ++(ms)でchar []とtchar []を相互に変換する最も簡単な方法は何ですか?
質問
これはかなりソフトボールの質問のように見えますが、charとtcharの参照に関して非常に多くのバリエーションがあるように見えるので、私は常にこの関数を調べるのに苦労しています。
他のヒント
TCHARは、charまたはwchar_t(ワイド文字)のMicrosoft固有のtypedefです。
charへの変換は、これらのどれが実際にあるかに依存します。 TCHARが実際にcharである場合、単純なキャストを実行できますが、それが本当にwchar_tである場合、文字セット間で変換するルーチンが必要になります。関数MultiByteToWideChar()
を参照してくださいこの投稿には、特にクロスプラットフォームソリューションを探している場合にもいくつかの回答があります:
この特定の状況では、TCharはワイド文字であると思いますが、そうでない場合にのみ変換を行う必要があります。どうにかして確認する必要があります。
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
それに関する素晴らしいことは、両方の等しいサイズが定数であるということです。つまり、コンパイラーはif()を処理(および削除)し、等しい場合は中括弧内のすべてを削除します
これは、_TCHAR * argv []をchar * argn []に複製するCPPコードです。
>Windowsに古いコードを採用する場合は、コードでオプションとして定義されている単純な使用を定義します。
コードに条件を入れることができます
ifdef _UNICODE
{// TCHARはワイド文字のようになります}その他{// TCHARは文字のようになります}
これは古いスレッドであることに気付きましたが、「正しい」とは言えませんでした。答えてください。今すぐ追加しています。
これが現在行われているように見える方法は、TEXTマクロを使用することです。 msdnのFindFirstFileの例はこれを指摘しています。 http://msdn.microsoft .com / en-us / library / windows / desktop / aa364418%28v = vs.85%29.aspx