txt Input
-
ich hab eine Variable die heist "height" und eine text-datei wo drin steht
widht :23; height :30;geöffnet habe ich die text datei schon (via ifstream) und ich wollte mal fragen wie mach jetzt die variable height auf 23 setzt?
schonmal dankeschön
-
Mit std::getline zeilenweise die Datei auslesen. Dann die Zeile (std::string) mit substr und find so bearbeiten, dass alles nach dem : und bis zum ; ausgeschnitten wird. Dann das in std::stringstream geben und mit >> in eine Variable schreiben.
-
mein code war
while (gotHeight != true) { while (!FileInputString.find("widht")) std::getline(MapData, FileInputString); widht = std::stoi(FileInputString.substr(8)); gotHeight = true; }aber dass geht nicht.
wo liegt der fehler?
-
SeppJ schrieb:
Bitte schlag dringend Mal nach, wie man "voraus" und "width" schreibt.
-
wenn du mir sagen kannst wie ich dass mache schreib es doch bitte. ich bin NICHT auf dem forum für rechtschreibtipps , ok?
mit feundlichen grüßen whiletruedo
-
also kann mir jemand schreiben wie ich das Problem löse welches ich habe?

-
Schau dir bitte mal an, wie find funktioniert.
http://www.cplusplus.com/reference/string/string/find/
-
könntest du mir vllt den code schreiben wie ich dann machen muss ?

-
WhileTrueDo schrieb:
könntest du mir vllt den code schreiben wie ich dann machen muss ?

Sorry, aber nein. Schau dir den Code auf der verlinkten Seite an und vergleich das mit deinem find-Aufruf.
Wenn du konkrete Fragen hast oder irgendwas bestimmtes nicht verstehst, melde dich wieder.
-
ich weiß einfach nicht wie ich dass mit der while schleife mache ich hab ein paar sachen probiert(alle gescheitert). also bitte bitte bitte könntest du es einfach schreiben

-
WhileTrueDo schrieb:
mein code war
while (gotHeight != true) { while (!FileInputString.find("widht")) std::getline(MapData, FileInputString); widht = std::stoi(FileInputString.substr(8)); gotHeight = true; }aber dass geht nicht.
wo liegt der fehler?Das dürfte daran liegen, dass der inputstream Leerzeichen ignoriert(übergib diesem via "mystream >> std::noskipws" den Befehl dies nicht zu tun).
Dann geht es vielleicht (keine Ahnung ob die Position, an der du dann den Zahlenstring vermutest, stimmt
-
Quiz-Aufgabe:
#include <string> #include <iostream> int main() { const std::string foo = "foobarbaz"; if (???) std::cout << "Nope.\n"; return 0; }Ersetze hier das "???" durch eine Abfrage, sodass wenn foo _nicht_ "blubb" enthaelt, "Nope.\n" ausgegeben wird.
-
ich habe noch ein problem mit der getline method. undzwar sage ich
std::getline(MapDataIfStream, FileInputString);aber dann wird das Programm unterbrochen. ist dass ein fehler des ganzen programms oder nur dieser zeile?
-
Ja? Nein? Vielleicht solltest du lieber mal nmans Quiz-Aufgabe bearbeiten?
-
ups! dass war mein fehler
allerdings eine letzte sache. wie komme ich wieder an den anfang der Textdatei?
-
setg. Und da ich deine nächste Frage schon errate: vorher clear.
-
könntest du mir vllt schreiben wie ich diese beiden was auch immer in einem code block einbaue? ich habe im internet keinen für mich erschließbaren beispiele gefunden

-
Sorry, aber ein wichtiger Grundsatz hier ist, dass wir keine Hausaufgaben machen.
Warum musst du überhaupt an den Anfang des Textfiles zurück?
-
ich habe einen abschnitt der so aussieht
while (FileInputString.find("widht")) std::getline(TextInputIfStream, FileInputString); //Unnötiger code while (FileInputString.find("height")) std::getline(TextInputIfStream, FileInputString); //nochm mehr codedurch die erste scleife kommt er durch und danach bleibt er bei der zweiten hängen. ich dachte dass wenn man wieder an den anfang geht dann könnte man den fehler beheben ...
-
Das funktioniert primär deshalb nicht, weil du find immer noch falsch benutzt. Das hat dir nman schon mindestens 3x gesagt und er hat dir auch gesagt, wie du rausfindest, wie es richtig geht. Wenn du Antworten konsequent ignorierst, dann hilft dir sehr bald niemand mehr.