2013-07-30 3 views
0

У меня есть код, подобный этому входу основной программыКак преобразовать символ * на символ ** в MFC++

char * argv[] Я сейчас пытаюсь получить аргумент из функции командной строки

char *argv = GetCommandLine(); 

, но я не могу передать эту функцию в качестве параметра

parseCommandLineArguments(argc, argv); 

ее дает мне ошибки cannot convert parameter 2 from 'char *' to 'char **' может кто-нибудь помочь мне, пожалуйста, здесь. Спасибо.

Это в основном аргументы для консоли main function. Я пытаюсь изменить его на main function без входных параметров в MFC dialogue based application.

+1

Вы не можете просто _'convert'_ 'argv'' char ** '! Вам может понадобиться разделить строку на отдельные слова, взглянуть на 'strtok()' –

+1

'char **' означает указатель на указатель на char *, но в данном конкретном случае это старый Cism и он ожидает указатель на массив указателей, каждый из которых указывает на строку с нулевым завершением, представляющую токен в командной строке. – kfsone

+1

Смотрите это изображение: http://i.msdn.microsoft.com/dynimg/IC506195.png замените «pstr» на «argv», и оно должно быть связано с вашей проблемой. – kfsone

ответ

2

Там существуют глобальные переменные __argc и __argv/__wargv, что вы можете получить доступ, который должен уже есть данные заполнены.

+0

Я бы предположил, что OP должен использовать результат из 'GetCommandLine()', что бы это ни было. –

+0

Спасибо. GetCommandLine() также возвращает те же аргументы, что и для основной функции, поэтому я использовал его для получения аргументов, чтобы я мог вызвать функцию без параметров в приложении MFC. – Hadi

-3

попробовать этот

полукокса ** имяПеременной = (символ * *) * ARGV;

+0

Нет, он не работает, он дает непредвиденную ошибку, если я пытаюсь использовать эту командную строку. – Hadi

+0

Это просто неправильно! –

3

Первый из его прозрачного случая преобразования char * в char **. Если вы хотите просто преобразовать, вам следует пройти следующий код.

char **variableName=(char **) argv; 

но по мне у вас есть несколько аргументов в одном символе *, поэтому вы сначала разбиваете char * на несколько строк.

Это основное правило состоит в том, что

символ *: - используется для одной строки символов, как,

char* MyOwn = "Hey There"; 

В то время как символ ** используется для многократной строки.

char** multipleString; 
multipleString= (char**)malloc(3 * sizeof(char*));  //allocating memory location.. 
multipleString[0] = "First"; 
multipleString[1] = "Second"; 
multipleString[2] = "Third"; 
+0

Вы должны выделить 'multipleString':' char * multipleString [3]; ' –

+0

Opps sorry Обновлено :) !! –

+0

Мое предложение сделало бы это. Представление 'malloc()' просто усложняет все. –

0

Off стороны, я предположил бы, что parseCommandLineArguments это ожидает стандартный (int, char**), которые были переданы в main. GetCommandLine() возвращает необработанную командную строку, которая должна быть проанализирована в . Кажется, в этом нет необходимости; просто позвоните parseCommandLineArguments с аргументами, которые вы получили в main.

Смежные вопросы