0

したがって、Win32 API では、メイン関数を次のように定義しています。

wmain(int argc, WCHAR* argv[])

いくつかの引数を渡して、引数の値に基づいて switch ケースを実行したいと思います。たとえば、次のようになります。

wmain(int argc, WCHAR* argv[])
{
    char* temp = argv[];
    switch (temp) {
    case "one": blah blah;
...
}

もちろん、 temp=argv[] は機能しません。変換するための提案を探しています。現在、if-else-if 処理が行われていますが、非常に非効率的です!

これを変換する必要があるのは、WCHAR* で switch ケースを実行できないためです。

ご覧いただきありがとうございます。

4

4 に答える 4

2
于 2010-11-18T19:01:57.790 に答える
0

std::wstring から std::string に変換してみてください。簡単です。もっと短い方法があるかもしれません。

std::wstring コンストラクターを使用して WCHAR* を std::wstring に変換し、std::wstring メソッドのいずれかを使用して std::String に変換します。

于 2010-11-18T19:03:12.300 に答える
0

少し前に書いた簡単な例を次に示します。

新しい win32 コンソール アプリケーションを作成し、ATL サポートを選択します。これを追加してコンパイル/実行...

#include "stdafx.h"
#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
// A _TCHAR is a typedef'd, depending on whether you've got a unicode or MBCS build

// ATL Conversion macros are documented here
// http://msdn.microsoft.com/en-us/library/87zae4a3(VS.80).aspx
// Declare USES_CONVERSION in your function before using the ATL conversion macros
// e.g. T2A(), A2T()    
USES_CONVERSION;

TCHAR* pwHelloWorld = _T("hello world!");
wcout << pwHelloWorld << endl;

// convert to char
char* pcHelloWorld = T2A(pwHelloWorld);
cout << pcHelloWorld << endl;


cin.get();

return 0;
}

もちろん、文字列をオンにすることはできませんが、これにより、WCHAR を char に読み込むために必要な情報が得られるはずです。そこから、十分に簡単に int に変換できます..これが役立つことを願っています;)

于 2010-11-19T15:42:57.053 に答える
0

これが良い考えかどうかはわかりません。WCHAR* には、意味のある方法で char* にマップできない Unicode 文字が含まれている可能性があります。これを無視したい場合は、http://www.codeguru.com/forum/showthread.php? t=336106 にフォーラムの投稿があり、WCHAR* から char* への変換に関するいくつかの提案があります。

于 2010-11-18T19:01:26.773 に答える