Как узнать значение argv[]?

Рейтинг: 1Ответов: 2Опубликовано: 11.04.2011

Доброго времени суток!

Подскажите пожалуйста, как все-таки посмотреть значение в argv[], принцип работы и все, что связано прочитал, в голове уложил, но вот даже банальное:

int _tmain(int argc, _TCHAR* argv[])
{
    if(argc==1){
        std::cout<<"Non arg\n";
        return 0;
    }

    for(int i = 0; i < argc; ++i){
        std::cout<<argv[i]<<"\n";
    }

    return 0;
}

выводит мне адреса. А как бы посмотреть не адреса, а прямо вот параметр? куда не смотрю у всех авторов примеры сходятся на этом , но когда их компилишь и запускаешь, то в итоге я получаю адреса моих аргументов.

Ответы

▲ 3Принят

Ну, насколько я понимаю, стандартный cout не переваривает юникод и wchar_t.

А вот такое, скорее всего, заработает:

for(int i = 0; i < argc; ++i)
{
    std::wcout << argv[i] << std::endl;
}
▲ 4

Это всё безумный дурдом от MS. Забейте вы на этот дурной тип и пользуйтесь нормальным: он всё равно непереносим. Если очень хочется юникод, так и используйте предназначенные для этого типы данных (wchar_t*), либо не мучайтесь и пользуйтесь просто char*.

С другой стороны, по идее TCHAR должен превращаться либо в char, либо в wchar_t

Вот я запустил как у вас, только с char* (у меня нету TCHAR'а) и всё сработало, так что я не пойму как вы адреса получаете:

cy6ergn0m@localhost tests/cpp $ cat main.cxx
#include <iostream>

using namespace std;

int main(int argc, char * argv[]) {
        for(int i = 0; i < argc; ++i)
                cout << argv[i] << endl;

        return 0;
}

cy6ergn0m@localhost tests/cpp $ g++ main.cxx -o test
cy6ergn0m@localhost tests/cpp $ ./test aaa bbb ccc
./test
aaa
bbb
ccc