Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Артём007
2 / 2 / 0
Регистрация: 04.02.2012
Сообщений: 46
#1

Как в C++ получить результат исполнения внешней команды - C++

02.09.2013, 18:19. Просмотров 956. Ответов 5
Метки нет (Все метки)

Вообщем я пишу простейший код:
C++
1
2
3
4
5
6
7
#include <stdlib.h>
#include <iostream>
using namespace std;
 
int main () {
        system("cd");
}
При выполнении он выдаёт мне текущий каталог (скажем "C:\"). Вопрос в том, как сохранить результат исполнения команды в переменную? Команда cd приведена чисто ради примера, в место неё может быть что угодно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2013, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в C++ получить результат исполнения внешней команды (C++):

[Задача] Объясните результат исполнения программы - C++
// Файл t1.cc #include &lt;iostream&gt; class C { int x; public: C() { x = 10; } int get() { return x; }

Как получить команды, которые программа посылает на процессор? - C++
Всем привет. Готовлюсь к научной работе и получил необычное задание, которое вообще не вписывается в сферу моей деятельности. А...

Как получить результат выполнение system()? - C++
Добрый день. Как мне получить результат выполнения команды system() в какую, нибудь переменную? Добавлено через 24 секунды К примеру...

Получить вывод команды оболочки - функция, обратная system() - C++
Доброго времени суток, товарищи! Расскажите, пожалуйста, существует ли в С++ функция, обратная по действию system(). То есть, если...

не могу получить желаемый результат в программе - C++
Сама программа компилируется и выводит желаемое количество чисел. но при условии прекратить задачу продолжает выводить числа. Не выводит...

необходимо получить результат 6 имея следующие данные - C++
int a; a=3.7+2; как получить 6????

5
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
02.09.2013, 18:29 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
#include <iostream>
#include <stdio.h>
 
std::string exec(char* cmd) {
    FILE* pipe = _popen(cmd, "r");
    if (!pipe) return "ERROR";
    char buffer[128];
    std::string result = "";
    while(!feof(pipe)) {
        if(fgets(buffer, 128, pipe) != NULL)
            result += buffer;
    }
    _pclose(pipe);
    return result;
}
собственно вызываем теперь не через system а через exec, который возвратит строку размером 128 , можно задать и больше вроде
2
Артём007
2 / 2 / 0
Регистрация: 04.02.2012
Сообщений: 46
02.09.2013, 19:10  [ТС] #3
Raali, ну возвращает он строку больше 128 символов. А не могли бы объяснить, что делает данный код?
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.09.2013, 19:34 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
 
int main () 
{
        system("dir > dir.txt");
        fstream fin("dir.txt");
        if (!fin) cout << "Error!" << endl;
        else
        {
            stringstream s;
            s << fin.rdbuf();
            string str = s.str();
            
            cout << str << endl;
            fin.close();
        }
 
        system("pause");
        return 0;
}
2
Артём007
2 / 2 / 0
Регистрация: 04.02.2012
Сообщений: 46
02.09.2013, 19:37  [ТС] #5
alsav22, а стоит? Т.е. как я понял, вы сначала записываете результат программы в файл, а потом читаете его? Помоему решение Raali лучше.
0
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,070
Завершенные тесты: 1
03.09.2013, 10:51 #6
Цитата Сообщение от Артём007 Посмотреть сообщение
Raali, ну возвращает он строку больше 128 символов. А не могли бы объяснить, что делает данный код?
дак можно выделить буффер побольше char buffer[BUF_SIZE]; и читать из pipe соответственно большее количество байт fgets(buffer, BUF_SIZE, pipe);

Цитата Сообщение от Артём007 Посмотреть сообщение
А не могли бы объяснить, что делает данный код?
дак в принципе тоже самое что и читать файл, только без создания его на диске, а сразу читаем из пайпы
0
03.09.2013, 10:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2013, 10:51
Привет! Вот еще темы с ответами:

на С++ получить результат аналогичный команде start %1 в cmd - C++
на С++ получить такой же результат как после работы скрипта на cmd (файл 1.cmd): @echo off start &quot;&quot; %1 exit Т.е. если...

Как обнулить массив из внешней функции? - C++
Здравствуйте. Нужно составить функцию, которая обнуляет массив, переданный по ссылке. У меня не получается это сделать. Помогите. ...

Как обратиться к методу класса из внешней функции? - C++
Имеется простой класс Employee с методами GetAge() - возвращает возраст, и SetAge(int age). Как сделать так, чтобы работали функции...

Как вывести результат исполнения этой программы? - Assembler
Написал программу, она работает проверял в turbo debbuger. Но не могу понять как вывести результат исполнения этой программы. Помогите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.