Pereiti prie turinio

C++ Command Line OUTPUT


Svečias Aliarth

Rekomenduojami pranešimai

Svečias Aliarth

Sveiki. Gal kas zinote kaip butu galima gauti i C++ Command Line atsakyma nerasant i faila. Kad ir per TCP/IP protokolus?

 

Negi tik sis ir yra vienintelis budas... :(

// ============================================================
//                      COMMAND LINE OUTPUT
// ============================================================
// REQUIRE: #include <fstream>
// INLINE CMD: @echo off & echo gas & echo 333 & help & pause
string exec(string action)
{
string cmd = action + " > cache.txt";
system(cmd.c_str());

string output = "";

ifstream stream("cache.txt");
string line;
while(getline(stream, line))
{
output += line + "\n";
}
stream.close();

return output;
}
// ============================================================

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Svečias Aliarth

Nelabai aiškus klausimas :)

Tiksliau sis klausymas butu, kad reikia si Command Line atsakyma gauti i C++ kintamaji:

#include <iostream> // <--- Console I/O
#include <cstdlib> // <--- Command Line

using namespace std;

int main()
{
string command_line_output = system("help");

return 0;
}

 

Jo negali grazinti tekstu system() funkcija, grazina tik int (skaiciaus) tipo atsakyma, kad uzklausa sekmingai ivygdita.

 

Kaip ir rasiau iseina ji grazinti rasant i paprasta faila:

#include <iostream> // <--- Console I/O
#include <cstdlib> // <--- Command Line
#include <fstream> // <--- Files I/O

using namespace std;

int main()
{
string command_line_output_file = "cache.txt";
string command_line_action = "help";
string input = command_line_action + " > " + command_line_output_file;
system(input.c_str()); // Vygdoma komanda

ifstream stream(command_line_output_file.c_str()); // Atveriamas failas
string command_line_output = "";
string file_line;
while(getline(stream, file_line)) // Viska kas eilute istraukiama
{
command_line_output += file_line + "\n";
}
stream.close();

// Uzklausos atsakymas tarp command_line_output kintamojo.

system("pause");
return 0;
}

 

Tad gal kas zinote geresniu budu be failu prisimetymu jos atsakymo grazinimui i kintamaji? :unsure:

Redagavo Aliarth
Nuoroda į pranešimą
Dalintis kituose puslapiuose

popen() funkcija (nežinau, ji C ar POSIX). Bet tokiu atveju galėsi tik vieną streamą gauti. Jei nori visų trijų, POSIX būdas yra fork(), duplikuoti stdin/stdout/stderr failų deskriptorius ir child procese leisti su exec*(). Windows turi kažką tiesiogesnio.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...