Ergebnis 1 bis 10 von 10

Thema: [C++] Vector-Struct Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    PHP-Code:
    //nicht wirklich php code :P
    class CWeight {
        private:
            
    struct sWeightEntry {
                
    char chDate[10];
                
    float fWeight;
                
    sWeightEntry(const char *datefloat weight) : // Konstruktor
                    
    fWeight(weight// setzen von lokalem fWeight auf weight
                
    {
                    
    memcpy(chDatedatesizeof(chDate)); // kopieren der Array
                    
    chDate[9] = '\0'// sicherheitshalber
                
    }
            };
        public:
            
    // oeffentliche Variablen
            
    vector<sWeightEntryvWeightList;

            
    // oeffentliche Funktionen definieren

            
    void AddWeight(const char *chDatefloat fWeight) {
                
    cout << chDate << " : " << fWeight << "\n";
                
    vWeightList.push_back(sWeightEntry(chDatefWeight));
            }
    }; 

    Geändert von Drakes (12.07.2009 um 19:22 Uhr)

  2. #2
    Vielen lieben Dank!

    Da hab ich wohl noch einiges zu lernen

    Auf jeden Fall funktioniert es jetzt und ich kann jetzt weiter C++ üben

    Danke auch für die schnellen Antworten

    lg

  3. #3
    Ich würde noch den memcpy-Aufruf folgendermaßen schreiben...
    Code:
    memcpy(chDate, date, std::min(sizeof(date), sizeof(chDate)));
    ...denn memcpy erfordert, dass beide Blöcke mindestens die übergebene Länge haben.

    Wenn man davon ausgeht, dass es nullterminierte C-Strings sind (was die Parameter date und chDate sein können und im Grunde sind), wäre strlen angebrachter.

    Eigentlich gibt es aber überhaupt keinen Grund, wieso du hier nicht Strings anstelle von C-Strings verwenden solltest.
    Code:
    #include <string>
    //...
    
    // in einen string einlesen
    char buffer[10];
    std::cin.width(10); // maximal 9 buchstaben + die terminierende Null einlesen
    std::cin >> buffer;
    std::string s = buffer;
    
    // einen string initialisieren
    std::string t = "Hello World!";
    
    // einen string kopieren
    t = s;
    
    // einen string ausgeben
    std::cout << s.c_str();
    
    //...

    Geändert von Kyuu (12.07.2009 um 22:48 Uhr)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •