String aufsplitten



  • Hi Ho leuts,

    Ja die Überschrift ist net so der renner, weis aber net wie ich das so nennen soll 🙂

    Also: Ich sitze hier an meine Projektarbeit (Zugsteuerung einer MÄRKLIN-Digital, in C++).
    So nun bin ich drann das signal auszuwerten das ich von meinen Schieberegistern hole. Die bekomme ich in einen String rein, mich interesieren von diesem String die 16 "0" und "1" er.

    SO nun das Problehm:-> der Inhalt des strings ist nun

    *0000000000000000CR!CR!
    

    also Wenn ichs aufs Textfeld oder Memo setze ist halt stat meinem "CR" ein "NOTE zeichen" -> das laut ASCII Tabelle ja dem Carriage Return Entspricht... habe es hier mal als CR getan 🙂

    -> Wie kann ich diesen String "Filtern"?
    Bei char Vektoren habe ich einen Index, da wärs ja kein Prob 😞

    LG Stan



  • std::string? Oder was für n typ?



  • String sZX;    //So habe ich das zb gemacht, da da wo ich das signal abfange das ZX heist
    


  • Also bei std::string kannst du ebenfalls mittels des []-Operators auf die einzelnen Zeichen zugreifen..

    Dazu gibt es noch einen Haufen Memberfunktionen, die du anwenden kannst:
    http://www.cplusplus.com/reference/string/string/

    Natürlich funktionieren die Standardbibliotheksfunktionen ebenfalls auf std::string :
    http://www.cplusplus.com/reference/algorithm/



  • Also mich verjagt es grade hier. Da diese hier alle Irgendwie net tun, da ich die String funktionen nehme (von dem ComPort treiber kak her MUSS ich das so nehmen), die die man beim Deklarieren mit großem "S" schreibt also String -> nicht-> string.

    ja gut, mit string sowiso haben wir nix in der schule gemacht, dh stehe ich vor einer weißen wand...
    mehr msus man net sagen, denke so erging es jedem zum Anfang 😞

    lg stan



  • Keine Ahnung, was das für eine Klasse ist String. Die musst du sonst mal her zeigen, da wir nicht wissen können, wie man mit der arbeitet.. Irgendeine Möglichkeit wird es schon geben. Schau dir einfach die Schnittstelle mal genau an!



  • Stanislas schrieb:

    die man beim Deklarieren mit großem "S" schreibt also String -> nicht-> string.

    In diesem Unterforum geht es aber um Standard-C++, und leider kennt Standard-C++ keinen Datentyp mit Namen "String". Vielleicht bist du im falschen Forum.



  • OK und was habe ich dan für ne Sprache?

    Also bis auf das der String zeugs ne andere Form hat ist alles andere "Objektorientiertes C++".



  • Stanislas schrieb:

    OK und was habe ich dan für ne Sprache?

    Woher sollen wir das wissen?

    Stanislas schrieb:

    Also bis auf das der String zeugs ne andere Form hat ist alles andere "Objektorientiertes C++".

    Bist du dir da so sicher? Die Vermutung ist naheliegend, dass auch andere Teile nicht Standard-C++ sind...

    Zeig doch mal ein bisschen Code, vor allem die Include-Direktiven. Wahrscheinlich benutzt du irgendwelche spezifischen Header...


  • Administrator

    Mit was für einem Framework arbeitest du denn? Vielleicht hat das Framework eine eigene Stringklasse. Allerdings ist mir kein C++ Framework aktuell bekannt, welches eine Klasse mit dem Namen String hat. Du musst uns also mehr Informationen geben, wir können nicht hellsehen, so gern wir das auch tun würden 😉

    Grüssli



  • Also habe hier Standart Borland 6.5 Professional.

    //---------------------------------------------------------------------------
    #pragma hdrstop
    #include "udemo.h"
    #include <vcl.h>
    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <String.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "ComPort"
    #pragma link "ComSignal"
    #pragma resource "*.dfm"
    TFormComPort *FormComPort;
    
    //*** BOOL Variablen für Funktionen
    bool bGoStop = true;    //Für Stop und GO
    bool bF1 = false;			//Bool für Licht1 schalter als SB!!!
    

    Das wäre mal Copy&Past von meinem FORM die Ganze includes, und danach wie man sieht kommen die Variablen wo Zug, Funktionen, Gleise usw Drauf sind.

    Das ganze stammt aus einem Proggy, welches das ComPort reden(wie man das auch nennen soll) mir in den Builder eingebaut hat(so hatten es alle vorgänger jahre auch gemacht, laut meinem Lehrer), und da war dann auch ein "Projekt" für den Builder dabei(so das Grundgerüst um mit dem ComPort zu komunizieren).

    dh habe ich an den Includes net viel gemacht.

    void TFormComPort::Gerade(String sWeiche)                                        
    {                                                                               
       sKom = "M";
       sKom += sWeiche;
       sKom += "G";
       sKom += "\r";
    
       ComPort -> WriteString(sKom);
    }
    

    Dies mal als Bsp, hier Addiere ich die Steuerbefehle zusammen und schicke sie als String an die Schnittstelle.
    -> Der Befehl hat als Folge das die weiche "sWeiche"(also irgendwo anders definiert wert in diesen String) auf GERADE schellt.

    lg stan



  • das da oben die sterne sol net Stan, sonder Stan-dart heißen ...
    ka wiso der das net schreiben kann(also der bindestrich ist natürlich nun als rechtschreib fehler zu sehen :))



  • Es heisst Standard und nicht Standart



  • ups



  • Edit: man sollte nicht posten wenn man nicht beachtet, das es schon weitere Seiten gibt 😉



  • Du hättest uns mitteilen dürfen, dass du mit VCL arbeitest.

    Übrigens:

    #include <string.h> 
    #include <string> 
    #include <String.h>
    

    Der erste und dritte Header sind identisch und bezeichnen den C-String-Teil mit den C-Funktionen strcpy() etc. In C++ wäre das <cstring> .
    Der zweite Header inkludiert den std::string aus der C++-Standardbibliothek. Scheinbar alles Dinge, die du nicht verwendest.

    Zudem ist

    #include <stdio.h>
    

    die Headerdatei der C-Standardbibliothek. Brauchst du die wirklich oder hast du denn Header mal vorsorglich inkludiert? Falls du sie brauchst, benutze in C++ <cstdio> . Standardheader haben nämlich nie eine Endung.


  • Administrator

    Die VCL ist nicht im Standard C++ enthalten, sondern ist ein eigenständiges Framework. Wir haben ein VCL Unterforum:
    http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html

    Deine Frage gehört somit dorthin. Ein Mod, sofern mal einer auftaucht, wird dich gerne verschieden 😉
    In der Zwischenzeit kannst du dort mal in die FAQ schauen gehen oder die Forensuche für das VCL Forum benutzen. Ich bin mir ziemlich sicher, diese Frage wurde schonmal gestellt 😉

    Grüssli


Anmelden zum Antworten