Получение Параметров Из Main

Тема в разделе "Общие вопросы по С и С++", создана пользователем dimanwv, 3 дек 2014.

  1. dimanwv

    dimanwv New Member

    Регистрация:
    30 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    доброго времени суток! Не могу решить проблему с параметрами функции main. Есть код
    Код (C++):

    int _tmain(int argc, char* argv[20])
    {
    int i;
    list<int> addresses;
    cout<<"Size of argv: "<<sizeof argv<<endl;
    for (i = 0; i < argc; i++)
    {
    cout << "argv[" << i << "] contains " << *argv <<" with size: "<<sizeof *argv<<" * "<< endl;
    addresses.push_back((int)argv);
    argv++;
    }
    for(list<int>::iterator it=addresses.begin();it!=addresses.end();it++)
    cout<<*it<<endl;
    }
     
    но он выводит только ПЕРВЫЕ символы всех параметров и адреса смещены на четыре. Я ни как не могу получить полные параметры. Только первые символы
    примерно так
    argv[1] contains d with size: 4
    .
    .
    >sp.exe wheel door pen green
    argv[0] contains s with size: 4
    argv[1] contains w with size: 4
    argv[2] contains p with size: 4
    argv[3] contains g with size: 4
     
    #1 dimanwv, 3 дек 2014
    Последнее редактирование модератором: 16 фев 2015
  2. Pingvin1

    Pingvin1 Well-Known Member

    Регистрация:
    20 июл 2009
    Сообщения:
    50
    Симпатии:
    0
    Надпись argv++; лишняя.
     
  3. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    Код (C++):
    #include <iostream>
    int main(int argc, char *argv[])
    {
    std::cout << "There were " << argc << " parameters\n";
    for (int i = 0; i < argc; i++)
    std::cout << "Parameter " << i << " was " << argv[i] << "\n";
    }
    а так Pingvin1 прав.
     
  4. Pingvin1

    Pingvin1 Well-Known Member

    Регистрация:
    20 июл 2009
    Сообщения:
    50
    Симпатии:
    0
    Из-за argv++; переход на следующий символ раньше вывода всего параметра!
     
  5. dimanwv

    dimanwv New Member

    Регистрация:
    30 мар 2012
    Сообщения:
    4
    Симпатии:
    0
    Да, спасибо. Это я так здесь написал. В реалии было как положено. Причина была такая. Я пишу в VS2010. Там _tmain(...) вместо main(...). И видимо она как то переопределена. Когда я убрал '_t' все заработало.
     
Загрузка...

Поделиться этой страницей