Suche nach dem Absatz bei einem String



  • hey leute,
    ich hab folgendes problem:

    ich möchte feststellen, ob innerhalb einer gewissen zeichenanzahl bereits ein absatz vorgekommen ist oder nicht. dafür gehe ich den string einzeln durch un suche nach '\n'
    doch leider bleibt der zähler bei 0...
    hier das programm schnipsel:

    for ( int i = 0 ; i < laenge ; ++i )
    {
      if ( zeile[ i ] == '\n' )
        ++absatz ;
    }
    

    vielen dank schon mal für eure hilfe 🙂



  • Sehe keinen Fehler. Mehr Code. http://ideone.com/f6wFh



  • hm, ich hab im moment eigentlich nicht viel mehr code als das, aber hier ist das ganze:

    int main ( int narg, char* argv[] )
    {
    
    	if ( narg != 3 )
    	{
    		cout << "usage: " << argv[ 0 ] << "dateiName, breite" << endl
    			 << "       Dateiname: Name der ASCII-Datei" << endl
    			 << "       Breite   : natürliche Zahl >= 2" << endl
    			 << "Liest die Datei dateiName und schreibt sie im" << endl
    			 << "Blocksatz mit der Zeilenbreite breite auf cout." ;
    	}
    
    	string zeile ;
    	int n = atoi( argv[ 2 ] ) ;
    	int absatz = 0 ;
    	int space = 0 ;
    
    	ifstream fin( argv[ 1 ] ) ; // Datei ¨offnen
    	if ( fin ) // Datei bereit?
    	{
    		while ( getline( fin , zeile ) )
    		{
    
    			int test = zeile.size() ;
    			cout << test << endl ;
    
    			for ( int i = 0 ; i < test+1 ; ++i )
    			{
    
    				if ( i == 0 )
    				{
    					absatz = 0 ;
    					space = 0 ;
    				}
    
    				if ( zeile[ i ] == '\n' )
    					++absatz ;
    
    				if ( zeile[ i ] == ' ' )
    					++space ;
    
    			}
    
    			cout << "Space: " << space << "\n"
    				 << "Absatz: " << absatz << endl ;
    }
    

    und als einzulesenden text habe ich:

    Das Trennzeichen in "Erpro-
    bung" muss verschwinden und
    die beiden Absaetze muessen
    optisch getrennt bleiben.

    Wenn Sie die Breite kleiner
    als 18 einstellen, wird das
    Wort Programmieraufgabe in
    seiner Zeile getrennt.
    *

    nochmals vielen dank.


  • Mod

    Wenn du mit getline liest, dann wird an den '\n' getrennt und das '\n' jeweils abgeschnitten. Bevor du jetzt verzweifelst über eine Lösung nachdenkst: Die Anzahl der erfolgreichen getlines ist dann entsprechend die Anzahl der '\n' im Text (eventuell minus 1, je nachdem, ob die letzte Zeile auf '\n' endet oder nicht).



  • ohhh, ok, alles klar
    vielen dank dafür 🙂


Anmelden zum Antworten