Frage zur split (strtok)



  • Hey,

    und zwar habe ich ein Problem mit dem splitten eines Strings.

    Mein String sieht so in der Art aus:

    "|0|H|h[19]|h|r|0|H|h[38]|h|r"

    Das Problem ist, dass dieser immer variiert und nicht immer gleich ist.
    Und zwar muss ich aus diesem String die zahlen in den [] Klammern auslesen
    und durch Namen ersetzen. Z.b.:
    19 = "peter"
    38 = "luis"

    Ich hatte die Idee sie anhand von einem bestimmten Zeichen zu Filtern.
    (Zum Beispiel: [$19], [$38]).
    Aber hab nun nach langem Probieren keine möglichkeit gefunden, das so
    hinzubekommen wie ich es möchte.

    Ich hoffe sehr, dass ihr mir bei meinem Problem weiterhelfen könnt.

    Mit freundlichen Grüßen.



  • Dafür gibt es in C++ regex.



  • hi:)

    ich hab dich nicht ganz verstanden.

    möchtest du:

    1. dein string in 2 hälften teilen?
    oder
    2.ein teil des trings durch einen namen erstzen (wie zb "19" durch "peter")?



  • Das zweite.



  • das ist allgemeine string verarbeitung und an sich ein sehr simples thema noch dazu.Ich kann dir ans herz legen immer ein buch zur hand zu haben mit solchen basics ⚠ . das habe ich nämlich auch in meinem nachgelesen

    das könnte dir helfen:

    #include <iostream>
    #include <string>
    #include <sstream>
    using namespace std;
    
    int main(){
    
    	string quelle = "|0|H|h[1]|h|r|0|H|h[38]|h|r";
    	string ek = "[";
    	string ek2 = "]";
    
    	string name = "peter";
    
    	cout << endl;
    
    	size_t f1 = quelle.find(ek);
    	size_t f2 = quelle.find(ek2);
    
    	stringstream b;
    	b << f1 << f2;
    	string a = b.str();
    
    	int start;
    	int end;
    
    	if (a == "69") { start = 7; end = 2; }
    	else		   { start = 7; end = 1; }
    
    	quelle.replace(start, end, name);
    
    	cout << endl << quelle << endl;
    
    	system("pause");
    	return 0;
    }
    


  • lime88 schrieb:

    das könnte dir helfen:

    Das halte ich für fragwürdig 😃



  • wieso 🙄 ? ein teil des codes ersetzt doch teile aus einem strings ^^. darum gings doch, oder?


Anmelden zum Antworten