String-Objekte zusammensetzen
-
Hallo zusammen!
#include <iostream> #include <string> using namespace std; int main() { string *param = new string[3]; param[0]="hallo"; param[1]="mein"; param[2]="auto"; system ("param[0] param[1] param[2]"); //geht nicht }Die zweitletzte Zeile müsste "zusammengesetzt" so aussehen:
system ("hallo mein auto");Wie krieg ich das hin?
vielen dank für euer Bemühen.Ach ja wenn ihr einen guten online-Artikel über die Dynamische Speicherverwaltung unter C++ kennt dann gebt mir doch mal einen Link!
Wär sehr froh!
-
mbudget schrieb:
Ach ja wenn ihr einen guten online-Artikel über die Dynamische Speicherverwaltung unter C++ kennt dann gebt mir doch mal einen Link!
Wär sehr froh!Guck mal da, hab ich im Magazin gefunden

http://www.c-plusplus.net/forum/viewtopic-var-t-is-159231.html
(Das Magazin findest du im Subforum "Die Artikel")Oh und dein Problem würde ich so lösen (grad keine Lust zu erklären, ich klatsch dir einfach mal den Code hin ;)):
string param[3]; param[0]="hallo"; param[1]="mein"; param[2]="auto"; system( param[0] + " " + param[1] + " " + param[2] ); // oder string fertig = param[0] + " " + param[1] + " " + param[2];
-
Hey!
Danke für Antwort & Link.
Leider funktioniert das so nicht (c++ unter Linux):cannot convert ‘std::basic_string<char, std::char_traits<char>, std::allocator<char> >’ to ‘const char*’ for argument ‘1’ to ‘int system(const char*)’
Code war:
int main() { string *param = new string[3]; param[0]="hallo"; param[1]="mein"; param[2]="auto"; string fertig=param[0]; system (fertig); } //ODER int main() { string *param = new string[3]; param[0]="hallo"; param[1]="mein"; param[2]="auto"; system (param[0]); }Geht beides nicht...
-
Aso, klar..

Die Funktion "system" erwartet nunmal einen "const char*" - Typ als Parameter.. Ein Aufruf von "c_str()" von einem string-Objekt gibt dir den entsprechenden Zeiger zurück.
-
Hey!
Danke, das Ausführen klappt jetzt. Allerdings hab ich immernoch ein Problem:int wert=0; test[2]="test.sh"; wert=system(test[2].c_str()); cout << "Rückgabewert war: "<<wert;test.sh--- #!/bin/bash exit 5Der Rückgabewert "wert" im c++-Programm ist immer eine beliebige Zahl, zB 1280, obwohl das Skript richtig ausgeführt wird.
Hat jemand eine Idee, an was das liegen könnte ?
-
Hi, ich habe hier nur die Windows-Hilfe der C-Runtime-Library.
Hier steht, daß bei system() nur ein Wert 0 oder -1 (bei Fehler) zurückgeliefert wird.
Versuch es mal mit einem der spawn...()-Funktionen (mit Parameter WAIT). Diese scheinen den Exit-Code zurückzuliefern.
-
ich vermute mal anhand deines angegebenen codes, dass du dich auf linux/unix bewegst.
da könntest du zum beispiel#include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream);verwenden.
anleitung dazu entweder manpages oder http://linux.die.net/man/3/popen
damit kannst du quasi ne pipe zu nem programm öffnen, das dann ausgeführt wird und kannst von stdout lesen oder auf stdin schreiben (also vom geöffneten programm sagen wir mal)
-
Hi,
allein schon aufgrund der offensichtlichen Plattformdifferenzen würde ich den Returnwert von system() überhaupt nicht fachlich zur Kommunikation nutzen.
Wenn man ein Ergebnis braucht, kann man das immer noch in einer Datei ablegen und diese dann vom PG einlesen - ehrlich gesagt: Mit einem int kommt man an so einer Schnittstelle doch sowieso nicht weit.

Gruß,
Simon2.
-
Hey!
Danke für eure Antworten!
popen habe ich auch schon angeschaut und sogar ausprobiert, doch ich muss nicht etwas an ein laufendes Skript schreiben oder die Aussgabe dessen lesen / weiterverwenden. Ich brauche lediglich den Rückgabewert, deshalb dünkt mich die popen-Lösung etwas übertrieben.Ein extra-File für den Rückgabewert finde ich auch übertrieben, deshalb guck ich mir jetzt mal die spawn() Funktion an.
Vielen Dank an alle, ich melde mich