2016-08-02 3 views
0
system("mkdir C:\\Users\\USER\\Desktop\\test"); 

я нашел это, однако, это не работает, потому что мой код выглядит следующим образомОпределяется пользователем каталог для C++ функции системы, чтобы выполнить из

string inputFAT = "input.FAT"; 
    string outputdirecotry = "adirectory"; 
    string exepath = "FATool.exe"; 

    cout << "enter the directory you would like to have the files put out to"; 
    getline(cin, outputdirecotry); 
    string outputdirectorycommand = "cd " + outputdirecotry; 


    cout << "enter the path of the file you want to extract"; 
    getline(cin, inputFAT); 

    cout << "enter the path to the FATool executable"; 
    getline(cin, exepath); 

    string exportcommand = exepath + " -x " + inputFAT; 
    system(outputdirectorycommand.c_str && exportcommand.c_str()); 

, как вы можете видеть, что мне нужно пользователю определить каталог что функция системы должна пойти и когда я пытаюсь построить его он бросает эти ошибки

Тяжесть Код Описание проекта Строка файла Подавление государство Ошибка C3867 «станд :: basic_string, зЬй :: аллокатора > :: c_str ': нестандартный синтаксис; использование '&', чтобы создать указатель на член FATool ++ C: \ Users \ русс \ Documents \ Visual Studio 2015 \ Projects \ fatool ++ \ fatool ++ \ main.cpp 24

, а также это

Тяжесть Код Описание Состояние подавления строки файла проекта Ошибка C2664 'int system (const char *)': невозможно преобразовать аргумент 1 из 'bool' в 'const char *' FATool ++ c: \ users \ russ \ documents \ visual studio 2015 \ projects \ fatool ++ \ fatool ++ \ main.cpp 24

так что это даже возможно сделать это, или я должен просто свожу проигрывает и определить каталог сам и мои друзья идут в код и сделать то же самое

ответ

1

Параметр, передаваемый system() неправильно:

system(outputdirectorycommand.c_str && exportcommand.c_str()); 

Синтаксис outputdirectorycommand.c_str неверен, и параметр, переданный в system(), равен bool, что, очевидно, неверно.

Предположим, что вы хотите сделать, это выполнить cd <x> && FATool.exe -x <xxx>, то вы должны cat вашу команду и передать его в system():

string cmdToExecute = outputdirectorycommand + " && " + exportcommand; 
system(cmdToExecute.c_str()); 
+0

ничего себе хорошо спасибо я никогда не учил о делать что теперь кажется настолько очевидным –

1
system(outputdirectorycommand.c_str && exportcommand.c_str()); 

Это пытается взять адрес станд :: строка: : c_str, преобразовать его в bool и логический - и протестировать его с помощью bool-преобразования возвращаемого значения exportcommamd.c_str().

Вы, вероятно, предназначен

system(outputdirectorycommand.c_str() + " && " + exportcommand.c_str()); 
+0

я думаю, что тоже работает, однако я думаю, что первый ответ путь наименьшего сопротивления по-прежнему заслуживает upvote хоть –

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

  • Нет связанных вопросов^_^