2

重複の可能性:
VC++でstd::coutを使用してargv[]値を出力できない

コード:

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    cout << argv[0] << endl;
    system("PAUSE");
    return 0;
}

ご覧のとおり、標準のWin32コンソールアプリケーションです。
紛らわしい部分は、の値がargv[0]として出力されること00035B88です。
これは(AFAIK)コマンドラインオプションなしで実行されているためargv[]、まだ値がないはずです。(またはこれが問題ですか?)

ただし、argv[]はポインタ()として宣言されており、ポインタのアドレスが出力される_TCHAR*と聞きました。coutこれは本当ですか?もしそうなら、どうすればの値を印刷/使用できますargvか?

4

3 に答える 3

4

_TCHAR実行可能ファイルがUnicodeオプションでビルドされた場合、はワイド文字タイプです。coutワイド文字を処理できないため、文字列に変換して文字列を印刷する代わりに、文字列のアドレスを印刷するchar *デフォルトのプリンタを(効果的に)使用します。void *

wcout代わりに使用してください。

于 2012-09-26T04:08:46.880 に答える
1

うーん。argvの最初の配列エントリ(つまり、argv [0])は、私が正しく覚えていれば、実行可能ファイルの名前です。したがって、ACスタイルの文字配列の最初の文字のアドレスを出力している可能性があります。これを試して:

cout << (char *)argv[0] << endl;
于 2012-09-26T04:07:06.383 に答える
0

あなたのproject settings->General。に移動し"Character encoding"て選択します"multibyte character set"。に変更_tmain()しますmain()。これで、文字が印刷されます。

于 2012-09-26T05:17:09.717 に答える