C plus plus Variable in String verwenden
Schönen guten Tag,
ich habe ein kleines Problem mit Variablen und C++.
Folgendes Szenario. Ich habe ein kleines Programm geschrieben das folgendes macht:
Der Benutzer wird nach Pfadangaben, Kundenname etc gefragt. Diese Angaben werden dann verwendet um in eine Batchdatei geschrieben zu werden.
Ziel ist es Batchdateien für Backup-Jobs zu generieren.
Die Batchfiles werden via std::ofstream outfile; geschrieben.
Klappt auch alles soweit ganz gut. Nur ein Problem hab ich noch.
Die Batchdatei soll verwendet werden um via blat.exe (tool fuer email versand) das Logfile an eine vordefinierte email-Adresse zu versenden. Der Syntax von der Blat.exe schaut nun dazu folgendermassen aus:
blat c:testlog.txt -to "testmail@test.de" -s "fehler im backup bei Kundenname"
So, mein Dilema ist nun, das ich ja verschiedene Kundenname habe. Also ist Kundenname nun meine string-variable. Diese muss zwingend aber zwischen den Anführungszeichen stehen, so dass der syntax der blat.exe funktioniert.. Wenn diese aber wiederrum zwischen den Anführungszeichen steht wird diese ja nicht als Variable erkannt.
Lange Rede kurzer Sinn. Wie kann ich Variable in einen String einfügen ? Ich hab jetzt schon ziemlich lange gesucht aber nichts passendes gefunden.
Bitte um Hilfe.
Vielen Dank und viele Grüße.
Achja, meine Programmierkenntnisse sind annähernd null, also bitte die Antwort so einfach wie möglich
ich habe ein kleines Problem mit Variablen und C++.
Folgendes Szenario. Ich habe ein kleines Programm geschrieben das folgendes macht:
Der Benutzer wird nach Pfadangaben, Kundenname etc gefragt. Diese Angaben werden dann verwendet um in eine Batchdatei geschrieben zu werden.
Ziel ist es Batchdateien für Backup-Jobs zu generieren.
Die Batchfiles werden via std::ofstream outfile; geschrieben.
Klappt auch alles soweit ganz gut. Nur ein Problem hab ich noch.
Die Batchdatei soll verwendet werden um via blat.exe (tool fuer email versand) das Logfile an eine vordefinierte email-Adresse zu versenden. Der Syntax von der Blat.exe schaut nun dazu folgendermassen aus:
blat c:testlog.txt -to "testmail@test.de" -s "fehler im backup bei Kundenname"
So, mein Dilema ist nun, das ich ja verschiedene Kundenname habe. Also ist Kundenname nun meine string-variable. Diese muss zwingend aber zwischen den Anführungszeichen stehen, so dass der syntax der blat.exe funktioniert.. Wenn diese aber wiederrum zwischen den Anführungszeichen steht wird diese ja nicht als Variable erkannt.
Lange Rede kurzer Sinn. Wie kann ich Variable in einen String einfügen ? Ich hab jetzt schon ziemlich lange gesucht aber nichts passendes gefunden.
Bitte um Hilfe.
Vielen Dank und viele Grüße.
Achja, meine Programmierkenntnisse sind annähernd null, also bitte die Antwort so einfach wie möglich
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158290
Url: https://administrator.de/forum/c-plus-plus-variable-in-string-verwenden-158290.html
Ausgedruckt am: 24.12.2024 um 17:12 Uhr
5 Kommentare
Neuester Kommentar
Dir auch einen schönen guten Tag @TokenRing,
Schau doch mal hier: Wikibooks - C++-Programmierung: Ausdrücke und Operatoren (Sektion String-Operatoren)
und hier: Wikibooks - C++-Programmierung: Strings
Gruß
Snow
Schau doch mal hier: Wikibooks - C++-Programmierung: Ausdrücke und Operatoren (Sektion String-Operatoren)
und hier: Wikibooks - C++-Programmierung: Strings
Gruß
Snow
Der Vollständigkeit halber in reinem C (ohne Fehlerprüfung):
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char const *argv)
{
char *user = "Hans";
const char *tpl = "blat c:testlog.txt -to \"testmail@test.de\" -s \"fehler im backup bei %s\"";
int bufSize = strlen(tpl)-2+strlen(user)+1;
char *outBuf = (char *)malloc(bufSize);
sprintf(outBuf, tpl, user);
system(outBuf);
return 0;
}
Hallo TokenRing!
Es wäre natürlich interessant, wie Du die die Variablen logfile und kundenname einliest, aber ich gehe mal davon aus, dass man Dich so verstehen kann, dass die Ausgabe der Variable logfile "\\nas\"(ohne Anführungszeichen) so steht und Du mit den Escapesequenzen bereits vertraut bist.
Da Du mit dem überladenenden isertion-operator (<< ) arbeitest, dürfte das ja kein Problem sein. Jetzt hab ich C++ gerade nicht mehr so aktuell auf dem Schirm und auch keine C++ Umgebung da, um das zu testen, aber da Du den String ja eh konkatenierst (verkettest), sollte doch
zu folgendem führen...
LG Florian
Zitat von @TokenRing:
Meine bisherige Code-Zeile (logfile und kundename sind variablen die bereits vorher eingegeben werden)
outfile << " blat" << logfile << "logmontag.txt" << " to -test@testmail.de -S \"Kein Fehler im Backup \" << kundenname <<std::endl;
ergibt logischerweise
blat \\nas\logmontag.txt to -test@testmail.de -S "Kein Fehler im Backup" Testkunde
Meine bisherige Code-Zeile (logfile und kundename sind variablen die bereits vorher eingegeben werden)
outfile << " blat" << logfile << "logmontag.txt" << " to -test@testmail.de -S \"Kein Fehler im Backup \" << kundenname <<std::endl;
ergibt logischerweise
blat \\nas\logmontag.txt to -test@testmail.de -S "Kein Fehler im Backup" Testkunde
Es wäre natürlich interessant, wie Du die die Variablen logfile und kundenname einliest, aber ich gehe mal davon aus, dass man Dich so verstehen kann, dass die Ausgabe der Variable logfile "\\nas\"(ohne Anführungszeichen) so steht und Du mit den Escapesequenzen bereits vertraut bist.
Da Du mit dem überladenenden isertion-operator (<< ) arbeitest, dürfte das ja kein Problem sein. Jetzt hab ich C++ gerade nicht mehr so aktuell auf dem Schirm und auch keine C++ Umgebung da, um das zu testen, aber da Du den String ja eh konkatenierst (verkettest), sollte doch
outfile << "blat" << logfile << "logmontag.txt" << " to -test@testmail.de -S \"Kein Fehler im Backup " << kundenname << "\"" << std::endl;
zu folgendem führen...
blat \\nas\logmontag.txt to -test@testmail.de -S "Kein Fehler im Backup Testkunde"
?!?LG Florian