Strings aufaddieren
-
Anfängerproblem, möchte aus einer Texxtdatei mehrere kurze Zeilen auslesen und diese dann in einer Variablen haben. Von PHP her kenne ich .=
void Rstatus() { char status[200], stream[200]; system("Relaisprogramm.bin -r 1 -g > /home/bernd/Heizung/Rstatus.txt"); std::ifstream daten("/home/bernd/Heizung/Rstatus.txt"); while(!daten.eof()){ daten.getline(stream,250); status += stream; } std::cout << status << "\n"; }Die Variable brauche ich zum Speichern in eine DB.
Gruß
Bernd
-
#include <fstream> #include <iterator> #include <string> void Rstatus() { system("Relaisprogramm.bin -r 1 -g > /home/bernd/Heizung/Rstatus.txt"); std::string status; std::ifstream daten("/home/bernd/Heizung/Rstatus.txt"); status.assign(std::istream_iterator<char>(daten), std::istream_iterator<char>()); std::cout << status << std::endl; }bb
-
bernd_h_schulz schrieb:
char stream[200]; [...] daten.getline(stream,250);Fällt dir was auf? char-Strings verwendet man in C++ normalerweise nicht - den Grund hast du bereits demonstriert.
std::string-Objekte kannst du mit + bzw += aneinanderketten:std::string s1="Hallo"; s1+="Hallo"; s1=s1+s1+"Hallo"; //usw.
-
unskilled schrieb:
#include <fstream> #include <iterator> #include <string> void Rstatus() { system("Relaisprogramm.bin -r 1 -g > /home/bernd/Heizung/Rstatus.txt"); std::string status; std::ifstream daten("/home/bernd/Heizung/Rstatus.txt"); status.assign(std::istream_iterator<char>(daten), std::istream_iterator<char>()); std::cout << status << std::endl; }bb
liefert: Segmentation fault
-
bernd_h_schulz schrieb:
unskilled schrieb:
#include <fstream> #include <iterator> #include <string> void Rstatus() { system("Relaisprogramm.bin -r 1 -g > /home/bernd/Heizung/Rstatus.txt"); std::string status; std::ifstream daten("/home/bernd/Heizung/Rstatus.txt"); status.assign(std::istream_iterator<char>(daten), std::istream_iterator<char>()); std::cout << status << std::endl; }bb
liefert: Segmentation fault
bestimmt nicht in dem teil des codes...
#include <iterator> #include <iostream> #include <fstream> #include <string> #include <iomanip> int main() { std::fstream daten("../test/main.cpp"); daten << std::noskipws; std::string status; status.assign(std::istream_iterator<char>(daten), std::istream_iterator<char>()); std::cout << status << std::endl; }funktioniert n1...
(Zeile 10 ist nur da, damit er die leerzeichen/zeilenumbrüche nicht verschluckt - deswegen auch der umstieg von ifstream auf fstream....
wusste gar nicht, dass das hier ne Rolle spielt)bb
-
Danke, so klappt es wie gewünscht
Bernd