g ++ не создает файл "a.out" - PullRequest
0 голосов
/ 10 марта 2019

Кстати, я знаю, что это дубликат, , но я не могу найти ответ!

Я пытаюсь создать файл C ++, который компилирует и запускает другой файл C ++ и проверяет, является ли вывод правильным или неправильным (я знаю, что это немного странно).

(папка Desktop содержит eval.cpp и a.out + папка «test»
папка тестирования содержит файлы main.cpp, tytytyt.in, tytytyt.out, tytytyt.ok)

eval.cpp

#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <string>
using namespace std;
ifstream fa("~/Desktop/test/tytytyt.out");
ifstream fok("~/Desktop/test/tytytyt.ok");
string filename;
int a, ok;
int main()
{
    cout << "In ce folder se afla fisierul pe care ai dori sa testezi? \n";
    cin >> filename;
    string str = "g++ -o a.out" + filename;
    const char * command = str.c_str();
    cout << "Compilare sursa cu ajutorul comenzii " << command << " ... \n";
    system(command);
    cout << "Rulare fisier... \n";
    system("~/Desktop/test/a.out");
    fa >> a;
    fok >> ok;

    if(a == ok) cout << "Corect!";
    else cout << "Incorect!";
    return 0;
}

Когда я запускаю ~/Desktop$ g++ eval.cpp, он создает файл a.out.
Тогда я бегу ~/Desktop$ ./a.out.
Когда моя программа печатает In ce folder se afla fisierul pe care ai dori sa testezi?, а я пишу ~/Desktop/test/main.cpp, программа печатает
Compilare sursa cu ajutorul comenzii g++ ~/Desktop/test/main.cpp ...
Rulare fisier...
, а затем появляется ошибка: sh: 1: /home/steven/Desktop/test/a.out: not found
, и если я проверяю тест папка, файл a.out не существует.

Может ли кто-нибудь мне помочь? `

1 Ответ

0 голосов
/ 11 марта 2019

Имеет

string str = "g++ -o a.out" + filename;
const char * command = str.c_str();
cout << "Compilare sursa cu ajutorul comenzii " << command << " ... \n";
system(command);

, если компиляция завершится успешно a.out в текущем каталоге, поскольку вы не указываете, где она должна быть сгенерирована

если вы хотите сгенерировать ~/Desktop/test/a.out заменить

string str = "g ++ -o a.out" + имя файла;

на

string str = "g++ -o ~/Desktop/test/a.out" + filename;

за исключением того, что я не понимаю, как можно выполнить компиляцию, потому что после a.out нет места для разделения с filename , filename , установленным через cin >> filename; так что это слово и не может начинаться с пробела или другого разделителя, вы уверены, что компиляция выполнена?Вы даже не тестируете результат system ...

Для меня это должно быть

string str = "g++ -o ~/Desktop/test/a.out " + filename;
...