Wert oder String an gewünschter Position auslesen und übergeben
-
Ich hoffe Ihr könnt mir als Hobbyprogrammierer diesmal wieder helfen.
Ich suche eine Möglichkeit aus einer ausgelesenen Datei aus einer gewünschten Zeile einen bestimmten Wert auszulesen. Ich kenne mich eigentlich besser mit VB aus. Dort habe ich z.B. die Funktionen instr(), mid() usw. mit denen ich das dort beherrsche, aber mit c++ tue ich mich da etwas hart. Ich nehme an es gibt da ähnliche Funktionen!Zum Problem: ich habe eine Beispieldatei mit div. Einstellungen
set1=0 set2=1 set3=3Ich möchte jetzt genau die Einstellung für set3 zrückgegeben haben.
also3Wie gesagt, in VB wüsste ich wie es geht.
Bisher habe ich es nur fertigbekommen mit strcspn eine gewisse Grundlage zu schaffen, um erstmal ein Zeichen zu finden. Damit findet man aber nur das zuerst auftretende Zeichen welches im Suchstring steht, aber wie gesagt, ich tu mich da etwas schwer!!#include <fstream> #include <iostream> #include <string> using namespace std; int getSetPos(string, string); int getSetPos(string settings, string searchsetting) { int i; i = strcspn(settings.c_str(),searchsetting.c_str()); //printf ("%i\n",i); return i; } int main () { int s; s = int (getSetPos("zu durchsucheder String", "gesuchtes Zeichen")); printf ("%i\n",s); return 0; }Ich hoffe Ihr könnt mir dabei helfen!
-
strcs...blabla gibts nicht (bzw. es gibts wahrscheinlich schon, aber es ist C und nichtmal inkludiert).
Du kannst z.B. so eine Funktion schreiben:std::pair<std::string, std::string> get_pair (const std::string& in, const std::string del = "=") { std::string::size_type pos = in.find (del); return std::make_pair (in.substr(0, pos), in.substr (pos + del.length(), in.length())); }Hier wird zuerst der Begrenzerstring (del = "=") gesucht und in pos gespeichert. Dann wird ein Paar von Strings angelegt, das erste Element ist vom Anfang bis (hoffentlich) zur gefundenen Position, das zweite von dem Begrenzer bis zum Ende der Zeile.
-
jede zeile mit getline einlesen (zB in einen string), und diesen durchsuchen mit find (find_first_of) etc...
also zB schauen ob im aktuellen string ein set3 drinsteht, und wenn ja, suchst nach dem ersten "=" und ließt das zeichen nach dem "=" aus
-
Danke erstmal für die Antworten.
jede zeile mit getline einlesen (zB in einen string), und diesen durchsuchen mit find (find_first_of) etc...
Wenn ich denn wüsste, wie man man das macht...

std::pair<std::string, std::string> get_pair (const std::string& in, const std::string del = "=") { std::string::size_type pos = in.find (del); return std::make_pair (in.substr(0, pos), in.substr (pos + del.length(), in.length())); }Wie wende ich diese Funktion denn an? Mit der Syntax komme ich hier nicht klar???
