Mein Ziel ist das C++ programmieren
-
- Beiträge: 923
- Registriert: 09.07.2008 11:50:57
- Lizenz eigener Beiträge: MIT Lizenz
Re: Mein Ziel ist das C++ programmieren
Du willst diese grafischen Textbubbles in vermutlich gnome?!
Schau dir libnotify an: https://wiki.archlinux.org/index.php/libnotify#C.2B.2B
Schau dir libnotify an: https://wiki.archlinux.org/index.php/libnotify#C.2B.2B
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Allen Postings gleichzeitig, zu entsprechen kann ich nicht. Also lass ich den C++ Quelltext weg,, der sollte wenn möglich individuell sein.
Sequentiel entspricht nacheinnander.
Paralell entspricht Multitasking.
Gibtes denn keine Möglichkeit das Systemkommando von C++ Quelltext(kompiliert zu löschen? >>>str.clear(); half nicht
Wie kann ich printf ausführbar machen? >>> <<< Codeshniplet startet nicht
Mein Ziel ist das C++ programmieren, ich will mehrere Instanzen von gedit, oder cp ,Alert etc starten.
Die Programme sollten in einer Konsole, die Systembefehle in der selbigen Konsole sequentiel oder parallel starten können.Und dass alles aus einem C++ Quelltext ( gcc kompilert).
Sequentiel entspricht nacheinnander.
Paralell entspricht Multitasking.
Gibtes denn keine Möglichkeit das Systemkommando von C++ Quelltext(kompiliert zu löschen? >>>str.clear(); half nicht
Wie kann ich printf ausführbar machen? >>>
Code: Alles auswählen
printf("cp\n\n");
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Mein Ziel ist das C++ programmieren
Hier liegt offenbar der Kern deines Problems. Eine Deklaration- bzw Definition einer Variablen sollte nur einmal vorkommen.DEBIANUNDANDREAS hat geschrieben: Derfolgende code funktioniert nur einmal.
.......Code: Alles auswählen
std::string command="gedit --new-window & gedit --new-window & gedit --new-window"; system(command.c_str());
------------------------------------------------------------------------
Ich möchte aber mehrfach so eine Codezeile nutzen können, oder eben eine bessere Alternative in C++
Nachfolgend benutzt man sie einfach.
Wenn ich mich nicht irre, verhalten sich die C-Strings ähnlich wie der die Java-Stringbuffer-Objekte, d.h. man kann neue Inhalte zuweisen.
Das sollte auch ganz einfach mit dem Operator '=' gehen, da dieser überladen ist (alternativ könnte man auch clear/insert verwenden) .
Code: Alles auswählen
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
string command="gedit --new-window &";
system(command.c_str());
command="cp quelle ziel";
system(command.c_str());
command="find . -name '*.cpp' -ls";
system(command.c_str());
return 0;
}
- schorsch_76
- Beiträge: 2544
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Re: Mein Ziel ist das C++ programmieren
Wenn du parallel starten willst, macht man das
a) mit forken
b) über Threads.
Bsp.
Gruß
schorsch
a) mit forken
b) über Threads.
Bsp.
Code: Alles auswählen
#include <boost/thread.hpp>
#include <vector>
void DoCommand()
{
std::string command = "gedit --new-window";
std::system(command.c_str());
}
int main(int argc, int argv)
{
static const int nr_of_threads = 10;
boost::thread_group my_threads;
// start all threads
for (int i = 0; i < nr_of_threads; ++i)
{
my_threads.add_thread(new boost::thread(DoCommand));
}
// join them
my_threads.join_all();
return 0;
}
schorsch
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Re: Mein Ziel ist das C++ programmieren
Mit forken wärs dann sowas, um mehrere Instanzen parallel laufen zu lassen:
Damit bist du dann allerdings im Land der hässlichen, plattformabhängigen Unix-C-APIs angelangt...
MfG Peschmä
P.S. wenn dein erster Post ausgesehen hätte wie der vierte, und du da sogar noch hingeschrieben hättest was du eigentlich erreichen willst (und damit meine ich nicht "es funktioniert nicht", sondern was es eigentlich machen soll) dann hättest du unsere beiden Antworten auch schon vor laaaanger Zeit gekriegt....
Code: Alles auswählen
#include <iostream>
#include <cstdlib>
#include <string>
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[])
{
for (int i = 0; i < 3; ++i)
{
pid_t pid = fork();
if (pid == 0)
{
std::cout << "we are the child process" << std::endl;
execl("/usr/bin/gedit", "");
}
}
return 0;
}
MfG Peschmä
P.S. wenn dein erster Post ausgesehen hätte wie der vierte, und du da sogar noch hingeschrieben hättest was du eigentlich erreichen willst (und damit meine ich nicht "es funktioniert nicht", sondern was es eigentlich machen soll) dann hättest du unsere beiden Antworten auch schon vor laaaanger Zeit gekriegt....
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Danke an alle Postings, ihr habt mir freundlicherweise, trotz der sprachlichen verständnisproblem auf neue Gedanken ( in Sachen C++) gebracht.
Ich werde eure Codelistings ausprobieren. Die Codelistings sind nur für meinen privaten Eigenbedarf vorgesehen, und so werde ich das handhaben.
Ich werde eure Codelistings ausprobieren. Die Codelistings sind nur für meinen privaten Eigenbedarf vorgesehen, und so werde ich das handhaben.
Danke an newdeb
danke an schorsch_76
Danke an peschmae
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Dieser Code ist mein Favorit von und Danke an newdeb. Aber ...
Ich bekomme es nicht in dir Recoverykonsole, zum laufen.
Wie könnte man den C++ Quelltext nocheinmal ändern damit das Kompilat in der Recoverkonsole funktioniert?
Diesen C++ Code Sniplet hatte ich im Quelltext gelöscht.
Code: Alles auswählen
#include <iostream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
string command="gedit --new-window &";
system(command.c_str());
command="cp quelle ziel";
system(command.c_str());
command="find . -name '*.cpp' -ls";
system(command.c_str());
return 0;
}
Wie könnte man den C++ Quelltext nocheinmal ändern damit das Kompilat in der Recoverkonsole funktioniert?
Diesen C++ Code Sniplet hatte ich im Quelltext gelöscht.
Code: Alles auswählen
string command="gedit --new-window &";
system(command.c_str());
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Zur Zeit habe ich den Quelltext geändert aber ich bekomme das mit switch,case, break nicht hin. Meine C++ Ide ist Code::Blocks und die ist zum verzweifeln.
Mein C++ Code. Wichtig nur für den privaten Gebrauch.
http://nopaste.debianforum.de/37432 <<< Die Komentarezeilen dienen zur späteren Komplierung.
Code::Blocks gibt folgenden output
Mein C++ Code. Wichtig nur für den privaten Gebrauch.
http://nopaste.debianforum.de/37432 <<< Die Komentarezeilen dienen zur späteren Komplierung.
Code::Blocks gibt folgenden output
- ||=== Project3, Release ===|
che/Programmieren/output/Project3/main.cpp|39|Fehler: case-Marke »1« nicht innerhalb einer switch-Anweisung|
che/Programmieren/output/Project3/main.cpp|91|Fehler: case-Marke »2« nicht innerhalb einer switch-Anweisung|
che/Programmieren/output/Project3/main.cpp|108|Fehler: case-Marke nicht innerhalb einer switch-Anweisung|
che/Programmieren/output/Project3/main.cpp|44|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|49|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|54|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|60|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|65|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|71|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|77|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|83|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|95|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
che/Programmieren/output/Project3/main.cpp|99|Warnung: Der Rückgabewert von »int system(const char*)«, der mit dem Attribut warn_unused_result deklariert wurde, wird ignoriert [-Wunused-result]|
||=== Erstellen beendet: 13 Fehler, 0 Warnungen===|
Zuletzt geändert von DEBIANUNDANDREAS am 28.10.2013 06:11:04, insgesamt 2-mal geändert.
Re: Mein Ziel ist das C++ programmieren
Wie gehst du das eigentlich an, das mit dem C++ lernen? Hast du ein Buch, eine Webseite oder andere Lektüre, die dir die Sprache näher bringt?
Die ersten drei Fehler sind (einfache) Syntaxfehler. Die Fehler über den Rückgabewert sind nur Warnungen, die in deinem Fall irrelevant sind.
Die ersten drei Fehler sind (einfache) Syntaxfehler. Die Fehler über den Rückgabewert sind nur Warnungen, die in deinem Fall irrelevant sind.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Danke, für die Nachfrage, mehrere Bücher von C++ habe ich schon, aber Druckfehler im Buch, ich werde das Problem im Quelltext, und das tue ich auch, durch auskommentieren lösen, ich bin meinem Ziel schon sehr nahe, es ist erreichbar man kann C++ die geschweifte Klammer an eine ander stelle setzen dann gehts.
Code im Buch
Mein lösung
...
Mit anderen Worten, die geschweifte Klammer offen nach recht's, der steile Zahn nach link's das bringt's.
Code im Buch
Code: Alles auswählen
... switch( befehl );
Code: Alles auswählen
... switch( befehl ){;
Mit anderen Worten, die geschweifte Klammer offen nach recht's, der steile Zahn nach link's das bringt's.
Re: Mein Ziel ist das C++ programmieren
Was du da machst, nennt man nicht programmieren... das ist Trial & Error ohne nennenswerte Grundlage... und verbrenn das Buch, das erzeugt wenigstens Wärme. So bringts garnix. Nimm eines der anderen Bücher. Wie heißt das denn, damit man einen großen Umweg drum machen kann?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Soll ich dir TRex (Moderator) per P/N, den Buchtitel mit ISBN Nummer zuschicken ?
Re: Mein Ziel ist das C++ programmieren
Warum schreibst du es nicht einfach hier rein? Oder ist das Buch so gefährlich und geheim?
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Mein Ziel ist das C++ programmieren
In deiner Entwicklungsumgebung solltest du dich schon auskennen. Ich kann dir in diesem Punkt nicht weiterhelfen.DEBIANUNDANDREAS hat geschrieben:Ich bekomme es nicht in dir Recoverykonsole, zum laufen.
Wie könnte man den C++ Quelltext nocheinmal ändern damit das Kompilat in der Recoverkonsole funktioniert?
Ich hatte das Beispiel im vi editiert und auf der Konsole mit g++ kompiliert.
Damit hast du die Deklaration von "command" gelöscht. Das mag der Compiler nicht.DEBIANUNDANDREAS hat geschrieben:Diesen C++ Code Sniplet hatte ich im Quelltext gelöscht.Code: Alles auswählen
string command="gedit --new-window &"; system(command.c_str());
Die Warnungen kann man durch Auswertung des Returncode von "system" vermeiden. Hier mal etwas Beispielcode:
Code: Alles auswählen
#include <iostream>
#include <cstdlib>
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
string command;
int rc, stat;
command="ls -ltr";
if ((rc = system(command.c_str())) == -1)
fprintf(stderr, "fork failed\n");
else
switch (stat = WEXITSTATUS(rc)) {
case 0:
printf("command sucessfully executed\n");
break;
case 127:
fprintf(stderr, "cannot execute /bin/sh\n");
break;
default:
fprintf(stderr, "child's exit status is %d\n", stat);
break;
}
return 0;
}
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Mein Ziel ist das C++ programmieren
Danke an den User newdeb.
Wenn wir schon beim Thema währen wie werden switch case Anweisungen in C++ verschachtelt?
Wen Verschachtelung, reicht ein default für beide switch? >>
Und wenn eine Verschachtelung >>\?
Wenn wir schon beim Thema währen wie werden switch case Anweisungen in C++ verschachtelt?
Wen Verschachtelung, reicht ein default für beide switch? >>
Und wenn eine Verschachtelung >>
Code: Alles auswählen
...
...
switch( befehl ){;
switch( befehl ){;
case 0 : cout << endl;
case 1: cout << endl;
break;
}
break;
default : cout << endl;
}
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Mein Ziel ist das C++ programmieren
Das innere "switch" muss in einem case-Fall des äußeren "switch" stehen, damit der Programmfluss das innere switch erreichen kann.
Die switch-Blöcke haben jeweils ihre eigenen Defaults.
Dieses Semikolon am Ende ist unnötig, da der switch-Block hier erst geöffnet wird (analog Funktionsblock):
Die switch-Blöcke haben jeweils ihre eigenen Defaults.
Dieses Semikolon am Ende ist unnötig, da der switch-Block hier erst geöffnet wird (analog Funktionsblock):
Code: Alles auswählen
switch( befehl ){;