Hallo,
ich habe folgendes Problem in C++. Ich möchte ein paar Kommandobefehle über system() ausgeben. Jedoch funktionieren die nicht so, wie man es von der direkten Kommandozeile her kennt.
Ich möchte im Programm ein paar Werte aus einer sqlite3 Datenbank auslesen und in eine Datei schreiben. Anschließend sollen die Daten geplottet werden. Keine sehr schöne Lösung, aber es soll erstmal grundsätzlich funktionieren 😉
1 2 3 4 5 | string StrOutput = "sqlite3 test.db 'select date, time, tempin, tempout, humidity from messwerte where datetime between \"2015-01-16 16:00:00\" AND \"2015-01-18 18:00:00\" ' > test.txt"; cout << StrOutput; system(("'"+StrOutput+"'").c_str()); system ("gnuplot < einstellungen.plt"); system ("rm test.txt"); |
Wenn ich das mit meinem Programm drum herum kompiliere, erhalte ich immer die Fehlermeldung:
sh: 1: sqlite3 test.db select: not found line 0: warning: Skipping unreadable file "test.txt" line 0: warning: Skipping unreadable file "test.txt" line 0: warning: Skipping unreadable file "test.txt" line 0: No data in plot rm: das Entfernen von »test.txt“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden sqlite3 test.db 'select date, time, tempin, tempout, humidity from messwerte where datetime between "2015-01-16 16:00:00" AND "2015-01-18 18:00:00" ' > test.txt
Wenn ich aber meinen erzeugten Kommandozeilenbefehl:
sqlite3 test.db 'select date, time, tempin, tempout, humidity from messwerte where datetime between "2015-01-16 16:00:00" AND "2015-01-18 18:00:00" ' > test.txt
direkt so in der Kommandozeile ausführe, dann funktioniert alles wie gewollt.
Hat jemand eine Idee? Ich befürchte, dass es an der Zeile hängt, in der ich der system() Funktion den fertig gebauten String mit der Abfrage übergebe.
Gruß Julian