String Teilung---- Schwarzer Bildschirm...



  • Hallo zusammen!
    Langsam verzweifel ich. Ich schreibe eine kleine Funktion, die einen Text in Sätze zerlegt und nutze die Stadardstrings MsVsc++ 2008.
    Mein Ansatz ist nicht der geschickteste, doch habe ich mehrere ausrobiert und nur dieser funktioniert:

    string sen[5];
    void split(string a)//parameter: Eingangsstring, text  mit Sätzen
    {
    	string::size_type n;   //iterator, neues Satzende
    	int c=0;	//aktueller Satz
    
    	string::size_type p;   //iterator, altes Satzende
    
    	while(p<a.size())
    	{
    		n=a.find(".",p); //neues Satzende finden
    		sen[c]=a.substr(n);//ab satzanfangsposition in variable kopieren
    
    		p=n;
    		c++;//:), neuer Satz
    	}
    
    }
    

    So weit so gut, wenn ich die funktion in meiner main() aufrufe und die einzelnen Sätze auf den Bildschirm bringe, kommt ein blackscreen.
    Das muss doch heißen, dass nichts in die Satzvariablen hineinkopiert wird, oder?
    Danke für Hilfe



  • Wo ist er denn, wenn du mal auf "Debug" => "Pause Debugging" klickst oder wie auch immer das wirklich genau heißt ^^

    bb



  • Naja, die Zeilen mit der Ausgabe der strings:

    for(int c=0;c<s;c++)
    	{
    		cout<<sen[c].c_str()<<endl;
    	}
    

    werden scheinbar übersprungen, die Anwendung wartet nur auf eine Eingabe("cin.get();") zum Beenden.



  • Suchst du vll so eine Art Explode?

    std::vector <std::string> explode (std::string _string, const std::string &_separator)
    {
    	std::vector <std::string> Return;
    	size_t position (_string.find_first_of (_separator));
    	while (position != _string.npos)
    	{
    		if (position)
    			Return.push_back (_string.substr (0, position));
    		_string.erase (0, position + 1);
    		position = _string.find_first_of (_separator);
    	}
    	if (!_string.empty ())
    		Return.push_back (_string);
    	return Return;
    }
    

    So hab ich das irgendwann mal gemacht - ist aber schon länger her ^^ Falls du Fragen dazu hast, kannste ja fragen - allerdings finde ich deinen Ansatz ein wenig sehr... hmmm... komisch ^^

    bb



  • Oh, danke, danke.
    Das bringt mich einen großen Schritt weiter. Allerdings fuchst es mich wirklich, dass ich an meinem Ansatz gescheitert bin...
    Natürlich ist der etwas exotisch, aber mir viel irgendwann nichts besseres mehr ein. 😃
    Auf jeden Fall danke für die Mühe!
    mfg, Gast93



  • Naja - du solltest aber evtl angucken, was du verwendest (und fragen, falls du etwas nicht verstehst)...

    Deine Funktion hatte nicht einmal einen Rückgabetyp - das wäre ein bisschen schwerer geworden ^^

    bb



  • Meine Funktion hat mit globalen Variablen gearbeitet, das war in dem Fall einfach praktischer, denn es greifen mehrere Funktionen auf die strings zu. Ich habe die Funktion gestern mal angeschaut und passend eingesetzt. Danke nochmal, das läuft alles.



  • Gast93 schrieb:

    Meine Funktion hat mit globalen Variablen gearbeitet, das war in dem Fall einfach praktischer, denn es greifen mehrere Funktionen auf die strings zu.

    Da solltest du aber aufpassen. Aus dem "praktisch" wird schnell ein schwer zu lokalisierender Fehler, da globale Variablen von überall her verändert werden können.

    Eigentlich ist jedes Problem ohne globale Variablen zu lösen. Für so kleine Dinge mögen sie vielleicht hilfreich sein, jedoch solltest du schauen, dass du mit der Zeit davon wegkommst. 😉


Anmelden zum Antworten