Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2011, 09:39   #1
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию Аргументы командной строки в студии.

int _tmain(int argc, _TCHAR* argv[])
{
cout<<"argc : "<<argc<<endl;
cout<<"a1 : "<<argv[1]<<endl;
cout<<"a2 : "<<argv[2]<<endl;
cout<<"a3 : "<<argv[3]<<endl;
..............

Запускаю как program.exe argument
вывод:
argc : 2
a1 : 00345108
a2 : 00000000
a3 : 006F0062


Чё это майкрософтовцы намудрили, и как аргументы получить?

Последний раз редактировалось the_deer_one; 13.07.2011 в 09:43.
the_deer_one вне форума Ответить с цитированием
Старый 13.07.2011, 10:26   #2
rustx88
Пользователь
 
Регистрация: 08.05.2011
Сообщений: 42
По умолчанию

нумерация идет с 0, а не с 1 (либо вам так нужно?)

то, что у вас показывает - это адреса указателей

вот так все выводит норм
printf("%s", argv[0]);

Код:
#include <iostream>

using namespace std;

int main(int argc, wchar_t ** argv) {
  for (int i = 0; i < argc; i++)
    printf("%s\n", argv[i]);

  cout << "\n\n\tpress any key for exit...";
  flushall();
  getchar();
  return 0;
}

Последний раз редактировалось rustx88; 13.07.2011 в 10:31.
rustx88 вне форума Ответить с цитированием
Старый 13.07.2011, 10:34   #3
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от the_deer_one Посмотреть сообщение
Чё это майкрософтовцы намудрили, и как аргументы получить?
Это вы что-то намудрили.

Код:
#include <iostream>

int main(int argc, char *argv[])
{
    std::cout << "arguments count: " << argc << std::endl;
    for (int i = 0; i < argc; ++i)
    {
        std::cout << "1: " << argv[i] << std::endl;
    }

    return 0;
}
Так-же хочу заметить, что нулевой аргумент - это всегда путь к запущенной программе. Таким образом, аргументы, которые введены в командной строке, записываются начиная с первой ячейки массива
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 13.07.2011, 11:27   #4
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

То как вы написали работает в mingw/g++, а в студии если я этот их _TCHAR* заменю на char* то при исполнении вылетает ошибка: "инструкция обратилась по левому адресу".

Макимум если я сделаю приведение
cout<<"a1 : "<<(char*)argv[1]<<endl; Я получу тока первый символ параметра и всё.
the_deer_one вне форума Ответить с цитированием
Старый 13.07.2011, 11:34   #5
the_deer_one
Участник клуба
 
Аватар для the_deer_one
 
Регистрация: 04.04.2010
Сообщений: 1,554
По умолчанию

В принципе можно _tmain() на main заменить и всё будет работать, но хотелось бы знать как можно делать в vs-шном случае.
the_deer_one вне форума Ответить с цитированием
Старый 13.07.2011, 11:49   #6
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

а во что у вас _TCHAR резолвится? если это wchar_t, то вам нужет std::wcout вместо cout
sashonk вне форума Ответить с цитированием
Старый 13.07.2011, 13:58   #7
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

the_deer_one

Чё это майкрософтовцы намудрили

ага, мечтай :lol:


1. гоогле STL unicode, первая ссылка
2. найти там cout
3. фтыкать
...
PROFIT!
Rififi вне форума Ответить с цитированием
Старый 11.03.2012, 22:20   #8
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

вопрос: Как запустить приложение с аргументами, но не из командной строки, а из самой студии?

В QtCreator есть специальная няшка - указываешь аргументы командной строки в свойствах проекта, и запускаешь как обычно из IDE

Есть что-то подобное в студии?

Уже не актуально. Если кому интересно:
В VS 2005 и 2008 аргументы командной строки прописываются в Project -> Properties -> Configuration Properties -> Debugging -> Command Arguments.

Последний раз редактировалось _Bers; 11.03.2012 в 22:41.
_Bers вне форума Ответить с цитированием
Старый 11.03.2012, 22:43   #9
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Есть что-то подобное в студии?
Конечно.
В свойствах конфигурации>>отладка
EUGY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аргументы командной строки Sadist989 Общие вопросы C/C++ 9 22.06.2011 12:53
аргументы командной строки ololo-schoolboy Общие вопросы C/C++ 2 19.05.2011 22:50
аргумент командной строки DeFace Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 06.09.2010 22:10
Аргументы командной строки в Boost.test nazavrik Общие вопросы C/C++ 0 18.02.2010 17:23
Выполнение командной строки z3rg Общие вопросы C/C++ 4 17.04.2009 22:26