problem...



  • hallo,
    habe folgendes problem:

    char kalt[]="cold";

    kalt hat eine länge von 5bits, sprich 5 zeichen

    möchte kalt aber mit einer 2. variabeln die ich über cin.getline eingebe vergleich,
    aber da kalt ja angeblich 5 bits groß is, aber nur aus 4 zeichen besteht, funktioniert das halt net 😉
    wie man merkt bin cih noch recht neu, hoff mir kann jdm helfen 😉

    gruss



  • Wie vergleichst du denn?
    Ich hoffe doch mit strcmp.



  • Hi

    Starke Überschrift.

    kalt hat eine länge von 5bits, sprich 5 zeichen

    Es sind Bytes.

    Sieh dir mal std::string mit (compare) an. 🕶



  • und dazu muss man noch sagen, daß du die string klasse aus dem c++ standard verwenden solltest.. da komfortabel

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
      string s;
     ...
    }
    

    es geht natürlich auch mit charakterarrays, schau dich mal in der

    www.cppreference.com

    um.

    ps: und denk das nächste mal über eine passendere überschrift für dein problem nach 😉



  • C Newbie schrieb:

    Wie vergleichst du denn?
    Ich hoffe doch mit strcmp.

    Ich hoffe doch nicht.

    Dass C Strings 1 Zeichen mehr Speicherplatz brauchen, als sie Zeichen selbst enthalten liegt daran, dass ein zusätzliches Nullzeichen ('\0', und nicht verwechseln mit '0') als Endekennung benutzt wird.
    Wenn du ein reines Stringliteral hast, dann definierst du das wie folgt

    const char kalt[] = "cold";
    

    Wenn du einen veränderbaren String brauchst, dann nimmt man in C++, wie elise schon sagte, std::string.



  • groovemaster schrieb:

    C Newbie schrieb:

    Wie vergleichst du denn?
    Ich hoffe doch mit strcmp.

    Ich hoffe doch nicht.

    Wie willst du C Strings denn sonst vergleichen 😕

    groovemaster schrieb:

    Dass C Strings 1 Zeichen mehr Speicherplatz brauchen, als sie Zeichen selbst enthalten liegt daran, dass ein zusätzliches Nullzeichen ('\0', und nicht verwechseln mit '0') als Endekennung benutzt wird.
    Wenn du ein reines Stringliteral hast, dann definierst du das wie folgt

    const char kalt[] = "cold";
    

    Wenn du einen veränderbaren String brauchst, dann nimmt man in C++, wie elise schon sagte, std::string.

    Damit erzählst du mir nichts neues. Er hat aber danach gefragt, wie man C Strings vergleicht und nicht nach einer Alternative. Es ist gut das std::string genannt wurde, eine Beispiel und ein Link gepostet wurde.

    Ich habe halt nur halt nur auf seine Frage geantwortet.



  • C Newbie schrieb:

    Damit erzählst du mir nichts neues.

    Der Beitrag war ja auch nicht an dich gerichtet, sondern an lucian.

    C Newbie schrieb:

    Er hat aber danach gefragt, wie man C Strings vergleicht

    Nö, er hat nie von C Strings gesprochen. Wenn ich ihn richtig verstanden habe, will er lediglich einen 2. String über cin einlesen. Und der C++ Weg dafür ist std::string. Und ein Vergleich mit einem Stringliteral sollte problemlos über std::string::operator == machbar sein.



  • Stimmt das hast du recht. Ich sollte besser lesen und weniger denken 🙄


Anmelden zum Antworten