Stringlänge berechen



  • silent_max schrieb:

    Nur damit ich es verstanden habe...

    C-Strings, also alles was mit char zu tun hat, kann man nicht auf C++ - String, also alles was mit string, projeziern?? Also sind char und string zwei total verschiedene Dateitypen?? Also kann man bei C++ strings rein gar nichts machen, was mit C Strings zu tun hat und umgekehrt??

    kralo9 schrieb:

    @silent_max

    Du solltest wissen, dass man nicht alle Variablen gleich behandeln kann! Das geht nur, wenn sie vom gleichen Typ sind!
    => std::string != char, int != std::string, bool != int, usw.

    Hab dich darauf doch schon hingewiesen!

    Edit: Dir wurde auch empfohlen, jede einzelne Codezeile zu kommentieren und zu schreiben, was du mit dieser Zeile erreichen willst! Mach das auch!



  • silent_max schrieb:

    Nur damit ich es verstanden habe...

    C-Strings, also alles was mit char zu tun hat, kann man nicht auf C++ - String, also alles was mit string, projeziern?? Also sind char und string zwei total verschiedene Dateitypen?? Also kann man bei C++ strings rein gar nichts machen, was mit C Strings zu tun hat und umgekehrt??

    Ich weiß nicht, wer das gesagt hat, aber neulich gab es die Meldung, dass alles, was in C möglich ist, ist auch in C++ möglich. Also habe ich daher gedacht, dass alles, was mit charmöglich ist, ist auch mit string möglich. Oder liege ich mal wieder daneben???

    string in c++ ist im Grunde eine Klasse, kein Datentyp wie z.B. ein Char.
    (Zumindest sollte man das als Anfänger zum Lernen so handhaben.)
    Deswegen kann man mit Strings nicht das Gleiche machen wie mit Chars.

    Wenn Du die genaue Funktionsweise von Strings verstehen möchtest, braucht man die Grundlagen zum Thema Klassen.

    Dann kann man sich mal anschauen, wie die Klasse String aufgebaut ist.
    Oder sie vielleicht sogar selber in vereinfachter Form programmieren.
    In der Regel macht es dann auch *Klick*.



  • kralo9 schrieb:

    @silent_max

    Du solltest wissen, dass man nicht alle Variablen gleich behandeln kann! Das geht nur, wenn sie vom gleichen Typ sind!
    => std::string != char, int != std::string, bool != int, usw.

    Wenn du nicht weißt, wie du einen Typ behandeln sollst, du aber weißt, was du erreichen willst, dann schau in einer Reference nach!
    http://www.cplusplus.com/reference/string/string/

    Deine Aufgabenstellung ist:
    -Benutzer soll einen Text eingeben
    -Programm gibt Länge (Anzahl der Zeichen) aus

    So, den ersten Schritt, die Eingabe, hast du.
    Jetzt schauen wir doch mal in der Reference nach, wie wir die Länge eines std::string rausfinden kann. Beste Lösung wäre eine Funktion der Klasse std::string, die das automatisch macht, ansonsten müssen wir nach umwegen schauen.
    Aber, siehe da:

    size()
    Return length of string (public member function)

    Super! Es gibt eine Funktion, die uns die Länge sagt. Schauen wir uns mal den Beispielcode der Reference an:

    // string::size
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main ()
    {
      string str ("Test string");
      cout << "The size of str is " << str.size() << " characters.\n";
      return 0;
    }
    

    Jetzt bist du in der Lage (musst du in der Lage sein), das auf deine Aufgabenstellung anzuwenden!

    @alle Flamer

    Wenn ihr nicht produktiv helfen könnt, dann lasst es bitte sein. Das hilft euch nicht und dem silent_max erst recht nicht.

    Gruß und guten Rutsch ins neue Jahr! 🙂

    Wie kommst Du über die C++ Reference auf den C++ String? Denn wenn ich bei C++ Reference nach C Strings suche, dann finde ich bloß C Strings.



  • silent_max schrieb:

    Ich weiß nicht, wer das gesagt hat, aber neulich gab es die Meldung, dass alles, was in C möglich ist, ist auch in C++ möglich. Also habe ich daher gedacht, dass alles, was mit charmöglich ist, ist auch mit string möglich. Oder liege ich mal wieder daneben???

    Du kannst ja auch mit C-Strings dasselbe machen, wie mit std::string aus C++.
    In dem Sinne, dass Du
    sie ausgeben kannst,
    die Länge ermitteln kannst,
    sie nach Inhalten durchsuchen kannst,
    usw. usw.

    Aber:
    Du kannst es nicht auf die selbe Art und Weise tun! Wie Du die einzelnen Aufgaben erledigst, unterscheidet sich schon.
    Du kannst also nicht eine Aufgabe mit einem C-String erledigen, danach einfach die Variablendeklaration von char * auf std::string ändern, den Rest unverändert belassen und dann erwarten, dass alles funktioniert!
    Genausowenig natürlich umgekehrt.



  • silent_max schrieb:

    Wie kommst Du über die C++ Reference auf den C++ String? Denn wenn ich bei C++ Reference nach C Strings suche, dann finde ich bloß C Strings.

    😕 😕 😕

    Ähm, du willst die Reference zu "String" nicht zo "C-String"...
    Suchmaschinen benutzen ist doch einfach! Such nach dem was du willst und nicht nach dem was du nicht wissen willst..

    Da stellst du dich jetzt blöd an.. Wenn du nicht nach "c++ string" suchst, bekommst du es auch nicht. Wenn du zwei Kugeln Schokoladeneis bestellst bekommst du auch keine zwei Kugeln Vanille..



  • kralo9 schrieb:

    Ähm, du willst die Reference zu "String" nicht zo "C-String"...
    Suchmaschinen benutzen ist doch einfach! Such nach dem was du willst und nicht nach dem was du nicht wissen willst..

    Die C++ Bibliotheken bzw. Funktionen werden ja unter der Rubrick "Other" geführt... Jetzt geht mir (endlich) ein kleines Licht auf...



  • silent_max schrieb:

    Willst Du mir jetzt die Schuld dafür geben, dass ich es von der Schule aus so lerne???

    Man kann auch außerhalb von der Schule lernen.(Internet,Bücher,etc.)

    0x0ERROR



  • Du kannst mit C-Strings auch bei C++ arbeiten.

    C-Strings sind eine Vereinbarung (Nullterminiertes char-Array)

    string in C++ ist ein eigener (neuer) Datentyp.



  • silent_max schrieb:

    Die C++ Bibliotheken bzw. Funktionen werden ja unter der Rubrick "Other" geführt... Jetzt geht mir (endlich) ein kleines Licht auf...

    Nein!
    Unter 'Other' wird geführt, was nicht zu Containern und In/Output gehört! Auch dort geht es um C++!



  • Um das nochmal deutlich zu sagen, in der Programmiersprache C gibt es den "Datentyp" String nicht.

    Schau Dir x-beliebige C-Programme an, dort wird immer mit Chararrays gearbeitet.
    Ein gutes Beispiel ist:
    C-Programm:

    char string[] = "die schoenen Dinge im Leben sind umsonst.";
    

    Man beachte, die Bezeichnung string ist lediglich der Name für das Array.
    Zum Vergleich in C++:

    std::string test="die schoenen Dinge im Leben sind umsonst.";
    

    Deutlich wird der Unterschied auch daran, daß man bei C++ Programmen, wenn man mit der Klasse (bzw. dem Datentyp) std::string arbeiten möchte, diesen auch einbinden muß mit

    #include <string>
    


  • redrew99 schrieb:

    Deutlich wird der Unterschied auch daran, daß man bei C++ Programmen, wenn man mit der Klasse (bzw. dem Datentyp) std::string arbeiten möchte, diesen auch einbinden muß mit

    #include <string>
    

    Was ist dann mit der Klasse

    cstring
    

    ???? Werden da alle Funktionen, die bezüglich char Arrays die unter Strings geführt werden, aufgeführt?



  • Es gibt keine Klasse cstring im Standard! Wo hast Du die her?
    Und es gibt keine
    "char Arrays die unter Strings geführt werden"
    was soll das denn sein?

    Mann, Mann, Mann ...



  • Belli schrieb:

    Es gibt keine Klasse cstring im Standard! Wo hast Du die her?

    http://www.cplusplus.com/reference/cstring/

    Edit: Aus der Bibliothek habe ich ja auch die Funktion strchr



  • Was soll der Scheiß-Link? Wo ist da eine Klasse cstring?

    Das steht für Dich auch extra unter:
    C library!
    Und weißt Du, womit sich die C library beschäftigt? Nein?
    Mit der Sprache C
    Und in C gibt es keine Klassen, wenigstens das sollte doch mittlerweile auch bis zu Dir vorgedrungen sein ...

    Nun beruhig mich endlich und gib zu, dass Du uns hier alle nur verarschst ... bitte!



  • Belli schrieb:

    Was soll der Scheiß-Link? Wo ist da eine Klasse cstring?

    Also unter C++ Reference gibt es unter der Rubrick C Library die Unterrubrick cstring(string.h). Schau halt nach...

    Wie schon geschrieben: Woher meinst denn Du, dass ich z.Bsp. die Funktion strchr habe?



  • redrew99 schrieb:

    string in c++ ist im Grunde eine Klasse, kein Datentyp wie z.B. ein Char.
    (Zumindest sollte man das als Anfänger zum Lernen so handhaben.)
    Deswegen kann man mit Strings nicht das Gleiche machen wie mit Chars.

    Was meinst du genau mit "Datentyp" im C++ Kontext?! Ein Typ für Variablen, in denen man Werte speichern kann? Das wären dann "Objekttypen". Klassen sind allerdings auch Objekttypen. Oder willst du hier auf die POD-Eigenschaft hinaus?

    Ich bin der Meinung, dass man einen Anfänger nicht unnötig mit Unterkategorien wie POD belasten muss. PODness wird erst interessant, wenn man an Objekte z.B. per memcpy ran oder mit C interfacen will.

    Ich sehe absolut keinen Sinn darin, zwischen built-in Typen und Klassentypen zu unterscheiden, wenn sie sich praktisch in den ersten Übrungen tatsächlich nicht unterscheiden. Ob du jetzt std::string oder int oder double verwendest, Objekte dieser Typen lassen sich kopieren, zuweisen, u.s.w. -- alles ganz normale Sachen.

    Und natürlich ist std::string nicht dasselbe wie char. std::string ist ein Objekttyp für Variablen zum Speichern von Zeichenketten. char ist ein Objekttyp für Variablen zum Speichern einzelner Zeichen.



  • silent_max schrieb:

    Belli schrieb:

    Was soll der Scheiß-Link? Wo ist da eine Klasse cstring?

    Also unter C++ Reference gibt es unter der Rubrick C Library die Unterrubrick cstring(string.h). Schau halt nach...

    Wie schon geschrieben: Woher meinst denn Du, dass ich z.Bsp. die Funktion strchr habe?

    Na dann ... und ... schon mal ein Objekt der Klasse cstring erstellt?

    Ich gebs jetzt endgültig auf, ich verspreche es!



  • silent_max schrieb:

    Belli schrieb:

    Was soll der Scheiß-Link? Wo ist da eine Klasse cstring?

    Also unter C++ Reference gibt es unter der Rubrick C Library die Unterrubrick cstring(string.h).

    Das ist aber keine Klasse.

    Schau halt nach...

    Vielleicht solltest du einfach mal den Ball flachhalten, du bist hier derjenige, der keinen Plan hat.



  • C-String
    Bibliothek: string
    Datentyp: char
    Mit C-String meine man eine Folge von Zeichen des Types char, die mit '\n' abgeschlossen wird.

    C++ - String
    Bibliothek: string
    Datentyp: std::string
    Der in der Standardbibliothek definierte Typ basic_string ist ein Template und ermöglicht das Arbeiten mit verschiedenen Zeichen, also auch mit >>wide characters(Typ wchar_t

    Habe ich es jetzt verstanden?????



  • Bashar schrieb:

    silent_max schrieb:

    Schau halt nach...

    Vielleicht solltest du einfach mal den Ball flachhalten, du bist hier derjenige, der keinen Plan hat.

    Na lass mal gut sein, frech oder unverschämt ist er noch nicht geworden, man kann ihm wirklich viel vorwerfen, aber das nicht.


Anmelden zum Antworten