Возможный дубликат:
Невозможно распечатать значения 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
?
_TCHAR
является широкоформатным типом, если исполняемый файл был собран с опцией Unicode. cout
не может обрабатывать широкие символы, поэтому вместо того, чтобы превратить его в char *
и распечатывая строку, он (эффективно) использует по умолчанию void *
принтер, который печатает адрес строки.
использование wcout
вместо.
Хм. Первая запись массива в argv (т.е. argv [0]) — это, если я правильно помню, имя исполняемого файла. Так что это может быть печать адреса первого символа в массиве символов стиля c. Попробуй это:
cout << (char *)argv[0] << endl;
В вашем project settings->General
, Идти к "Character encoding"
и выберите "multibyte character set"
, И поменяй свой _tmain()
в main()
, Теперь он будет печатать ваши символы.