Whitespace entfernen



  • Hallo,

    ich will mir eine Funktion schreiben, die aus einem String alle leerzeichen entfernt.

    Mein Versuch...

    #include <iostream>
    #include <math.h>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    #define PI 3.14159265
    
    string checkWhitespaces(string whitespaces) {
    
    	cout << whitespaces.length() << endl;
    
    	for(int i = 0; i < whitespaces.length(); i++) {
    
    		cout << "i: " << i << endl;
    
    		if(whitespaces[i] == ' ') {
    		cout << "hier" << endl;
    		}
    	}
    
    	return(0);
    }
    
    int main() {
    	string t1 = "9564 + 594 - 84515";
    	cout << checkWhitespaces(t1) << endl;
    
    	return(0);
    
    }
    

    Hier bekomme ich beim letzten Zeichen einen Fehler:
    expression: invalid null pointer

    Ich hab leider keine Ahnung, wo dieser Fehler zustande kommt. Könnt ihr mir weiterhelfen?

    Gruß



  • VIVUSorg schrieb:

    string checkWhitespaces(string whitespaces) {
            ...
    	return(0); // hier. Mach das weg. testweise kannst du ein return ""; hinschreiben.
    }
    


  • str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
    


  • hm ok, das geht.
    Kannst du mir sagen, warum? Bzw. warum er mit return(0); Probleme hat?



  • Du hast deine Funktion so deklariert, dass sie einen string zurueckgibt. Dann kannst du schlecht 0 returnen, oder?



  • int main()
    {
    	string str = "Nutze die \t Macht \n !";
    	string::iterator it = remove_if( str.begin(), str.end(), isspace );
    	str.erase( it, str.end() );
    	cout << str;
    }
    

Anmelden zum Antworten