length(),.at



  • Hallo Zusammen,
    da ich erst vor kurzem mit dem Programmieren von C++ angefangen habe, gibt es einige Sachen bei denen ich Probleme habe.

    Ich habe probleme mit dem Verständniss von .length() und .at.

    Kann mir vlt jemand genaueres dazu erklären.Mit meiner Recherche werde ich nicht wirklich schlauer:

    Danke schonmal im vorraus.



  • Gib doch mal einen Hauch an Kontext... idealerweise postest du ein Minimalbeispiel, mit dem du nicht zurechtkommst und stellst dann konkrete Fragen.



  • geht es um std::string?

    at:
    http://www.cplusplus.com/reference/string/string/at/

    Get character in string
    Returns a reference to the character at position pos in the string.

    The function automatically checks whether pos is the valid position of a character in the string (i.e., whether pos is less than the string length), throwing an out_of_range exception if it is not.

    length:
    http://www.cplusplus.com/reference/string/string/length/

    Returns the length of the string, in terms of bytes.

    This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storage capacity.

    Note that string objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. Therefore, the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).

    Both string::size and string::length are synonyms and return the exact same value.

    was ist da unklar?



  • Wie Daddy Felix schon sagte. Wenn du Hilfe brauchst solltest du auch sagen, wozu genau. Kristallkugeln sind grade knapp und raten möchte hier auch niemand.

    Ich rate mal, dass es sich um std::string handelt wenn du Info zu length und at haben möchtest.

    #include <string>
    
    int main()
    {
       std::string s = "Hello World";
    
       std::string::size_type l = s.length(); 
       // l ist jetzt 11, da "Hello World" aus 11 Zeichen besteht. std::string
       // liefert immer die Anzahl der tatsächlich enthaltenen Zeichen zurück,
       // eine abschließende 0x00 wie bei C-strings ist nicht berücksichtig.
       // Alle gültigen Indizes beginnen bei 0 und laufen bis length() -1, hier
       // also von 0-10.
    
       char Space1 = s.at( 5 ); // an Index 5 steht das Leerzeichen
       char Space2 = s[5];      // an Index 5 steht das Leerzeichen
    }
    

    at wird für gewöhnlich selten eingesetzt, da es eine Bereichsüberprüfung des Index macht und bei einem ungültigen Index eine Exception wirft. Normalerweise benutzt man den Index-Operator [] , um auf bestimmte Zeichen des strings zuzugreifen. Der Index-Operator führt keine Gültigkeitsüberprüfung durch was bei Fehlbenutzung zu undefiniertem Verhalten führt.

    Edit:
    Typos



  • std::string("hallo").at(1) == 'a'
    std::string("hallo").length() == 5
    


  • DocShoe schrieb:

    Wie Daddy Felix schon sagte. Wenn du Hilfe brauchst solltest du auch sagen, wozu genau. Kristallkugeln sind grade knapp und raten möchte hier auch niemand.

    Ich rate mal, dass es sich um std::string handelt wenn du Info zu length und at haben möchtest.

    #include <string>
    
    int main()
    {
       std::string s = "Hello World";
    
       std::string::size_type l = s.length(); 
       // l ist jetzt 11, da "Hello World" aus 11 Zeichen besteht. std::string
       // liefert immer die Anzahl der tatsächlich enthaltenen Zeichen zurück,
       // eine abschließende 0x00 wie bei C-strings ist nicht berücksichtig.
       // Alle gültigen Indizes beginnen bei 0 und laufen bis length() -1, hier
       // also von 0-10.
    
       char Space1 = s.at( 5 ); // an Index 5 steht das Leerzeichen
       char Space2 = s[5];      // an Index 5 steht das Leerzeichen
    }
    

    at wird für gewöhnlich selten eingesetzt, da es eine Bereichsüberprüfung des Index macht und bei einem ungültigen Index eine Exception wirft. Normalerweise benutzt man den Index-Operator [] , um auf bestimmte Zeichen des strings zuzugreifen. Der Index-Operator führt keine Gültigkeitsüberprüfung durch was bei Fehlbenutzung zu undefiniertem Verhalten führt.

    Edit:Tut mir leid Leute bin neu im Forum. Werde mich in Zukunft hoffentlich genauer ausdrücken.
    Genau es geht mir in der Frage um den string.

    Typos



  • Edit:Tut mir leid Leute bin neu im Forum. Werde mich in Zukunft hoffentlich genauer ausdrücken.
    Genau es geht mir in der Frage um den string.

    und wo sind deine Fragen?


Log in to reply