`cout & lt; & lt; argv [0] `возвращать шестнадцатеричное значение?

Возможный дубликат:
Невозможно распечатать значения argv [], используя std :: cout в VC ++

Код:

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?

1

Решение

_TCHAR является широкоформатным типом, если исполняемый файл был собран с опцией Unicode. cout не может обрабатывать широкие символы, поэтому вместо того, чтобы превратить его в char * и распечатывая строку, он (эффективно) использует по умолчанию void * принтер, который печатает адрес строки.

использование wcout вместо.

4

Другие решения

Хм. Первая запись массива в argv (т.е. argv [0]) — это, если я правильно помню, имя исполняемого файла. Так что это может быть печать адреса первого символа в массиве символов стиля c. Попробуй это:

cout << (char *)argv[0] << endl;
0

В вашем project settings->General, Идти к "Character encoding" и выберите "multibyte character set", И поменяй свой _tmain() в main(), Теперь он будет печатать ваши символы.

0
По вопросам рекламы [email protected]