[Erledigt] Umgang mit char arrays



  • Guten Tag,
    vorweg: ich bin ein absoluter C++ Anfänger.
    Also ich habe das Problem, dass ich es nicht schaffe eine Zeichenkette in ein char[] Array zu schreiben. Hier einfach mal mein Code:

    #include <iostream>
    
    using namespace std;
    
    class Fach {
    	public:
    		Fach() {
    			this->name = "Fach";
    			this->note = -1.0;
    		}
    
    		Fach(char* name, double note) {
    			this->name = name;
    			this->note = note;
    		}
    
    		char* getName() {
    			return this->name;
    		}
    
    		double getNote() {
    			return this->note;
    		}
    
    	private:
    		char name[];
    		double note;
    };
    
    int main() {
    
    	return 0;
    }
    

    Das Problem betrifft Zeile 8.

    Vielleicht könnt ihr mir da helfen und mir erklären wie ich damit umzugehen habe.

    Grüße Creylon



  • Benutze std::string statt char-Arrays. Die funktionieren dann auch ungefähr so, wie du es erwartest.



  • Gibt es keine Möglichkeit das mit char zu lösen? Ich würde meinen Code gerne einheitlich gestalten und da manche Funktionen nur mit char Arrays funktionieren, würde ich gerne alles mit char Arrays umsetzen. Zumal mein Dozent auch nur damit arbeitet.
    Des Weiteren wäre es dann einfacher für mich den double den ich dort habe in ein char array umzuwandeln, weil ich für die Klasse noch eine Methode brauche die mir die Daten in Form einer Zeichenkette zurückgibt.



  • Creylon schrieb:

    Ich würde meinen Code gerne einheitlich gestalten

    Sollst du ja auch, mit std::string

    Creylon schrieb:

    da manche Funktionen nur mit char Arrays funktionieren, würde ich gerne alles mit char Arrays umsetzen.

    siehe oben

    Creylon schrieb:

    Zumal mein Dozent auch nur damit arbeitet.

    Wenn er das wirklich tut: herzliches Beileid

    Creylon schrieb:

    Gibt es keine Möglichkeit das mit char zu lösen?

    Klar gibt es die (das ist die, mit der dein Programm dann dauernd wegen irgendwelcher merkwürdigen Fehler abstürzt):
    Du musst für das Array eine feste Größe vorgeben, und dann den übergebenen String dort hinein kopieren (siehe std::copy, std::strcpy).



  • Creylon schrieb:

    da manche Funktionen nur mit char Arrays funktionieren

    Hallo,

    die kannst du dann immernoch mit string::c_str() aufrufen.



  • manni66 schrieb:

    Creylon schrieb:

    Zumal mein Dozent auch nur damit arbeitet.

    Wenn er das wirklich tut: herzliches Beileid

    Ist das in anderen Fächern eigentlich auch so schlimm? Gibt es zum Beispiel Mathematik-Dozenten, die auf römischen Ziffern bestehen oder Physiker, die Längen unbedingt in "Ellen" oder so messen?



  • manni66 schrieb:

    Sollst du ja auch, mit std::string

    Alles klar, mit string funktioniert es jetzt. Nun will ich aber sprintf nutzen, um eine formatierte Zeichenkette in eine String Variable zu speichern.

    sprintf nimmt aber nur ein char Array.

    Jockelx schrieb:

    die kannst du dann immernoch mit string::c_str() aufrufen.

    Diese Funktion scheint mir ein const char Array zu liefern, weshalb

    Fach fach;
    
    	string s;
    
    	sprintf(s.c_str(), "%s\t%f", fach.getName(), fach.getNote());
    

    nicht funktioniert.



  • TyRoXx schrieb:

    Ist das in anderen Fächern eigentlich auch so schlimm? Gibt es zum Beispiel Mathematik-Dozenten, die auf römischen Ziffern bestehen oder Physiker, die Längen unbedingt in "Ellen" oder so messen?

    Keine Ahnung. Letztes Semester hab ich etliche Punkte abgezogen bekommen wegen solch kleinkackerigen Zeugs. Mein Dozent ist ein alter Russe. Keine Ahnung ob das was damit zu tun hat.



  • #include <sstream>
    #include <string>
    #include <iostream>
    
    int main()
    {
            std::stringstream ss;
            ss << "Hallo" << "\t" << 32.4f;
            std::string s = ss.str();
            std::cout << s << "\n";
    }
    


  • @manni66 Das ist es. Dankeschön für die Hilfe! 🙂


Log in to reply