これはかなりソフトボールの質問のように思えますが、charとtcharの参照に関しては非常に多くのバリエーションがあるように思われるため、私は常にこの関数を調べるのに苦労しています。
MultiByteToWideChar だけでなく、 "MultiByteToWideCharのいくつかの落とし穴" も参照してください。
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
{// DO LIKE TCHAR IS WIDE CHAR} ELSE {// DO LIKE TCHAR IS CHAR}
これは古いスレッドだと思いますが、「正しい」答えが得られなかったので、今追加しています。
これが現在行われているように見える方法は、TEXTマクロを使用することです。 msdnのFindFirstFileの例は、これを示しています。 http://msdn.Microsoft.com/en-us/library/windows/desktop/aa364418%28v=vs.85%29.aspx