Выполнение строковой команды в C ++ выполняется без возврата ожидаемого результата [duplicate]

0

Я использую c++ внутри создателя Qt для выполнения командной строки:

cd c:\
mkdir sadok 

Вот почему я использовал эти установки:

   int i, j;
   i=system ("cd c:\\");
   cout<<"i: "<<i<<endl;
   j=system("mkdir sadok ");

Но у меня было две проблемы:

1- Создание новой папки всегда находится по умолчанию, а не под c:\

2- cmd появляется и исчезает очень быстро и ничего не отображается.

Любая помощь пожалуйста.

  • 0
    Этот вопрос не относится к Qt, Qt Creator или QProcess (из заданных вами тегов).
  • 0
    Вызывая system вы запускаете оболочку (cmd) и указываете ее cd c:\\ . Он рад сделать это, но это не влияет на вашу программу. Вы не можете изменить текущий каталог, вызвав system . Каждая ОС имеет свою функцию для этого. Вы можете попробовать chdir но я понятия не имею, поддерживается ли он в Windows.
Показать ещё 3 комментария
Теги:

2 ответа

2
Лучший ответ

system ("cd c:\\"); просто изменяет рабочий каталог в оболочке, открытой system(), которая не меняет текущий рабочий каталог вашей программы.

Вы можете попытаться сделать

i=system ("cd c:\\; mkdir sadok");

или

i=system ("mkdir c:\\sadok");
0

Вы можете добиться того же со следующим (намного проще) кодом:

QDir dir;
dir.mkpath("C:\\sadok");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню