char zusammenfügen

  • Themenstarter Themenstarter seru
  • Beginndatum Beginndatum
Ja eigentlich schon hab ansonsten nicht viel mit Statischen Dingen am Hut.
Für meine Anwendung wäre mir eine dynamische Lösung eh lieber aber die statische ist für den Anfang einfacher.
Kannst du mir jetzt bitte anhand eines Codes erklären wie du das gemeint hast bitte
 
statisch bezieht sich lediglich auf die Speicherklasse und nicht auf dein Programm ;)

C++:
class Foo
{
public:
        static int bar;
};

// in einer .CPP-Datei im globalen Gültigkeitsbereich:
int Foo::bar = 0;
 
Ok das hab ich verstanden, nur wenn ich vorher meine
static char buffer[] = { 2 /*STX*/, '1', '0', '0', '1', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',' ', 3 /*ETX*/ };
im headerfile .h definiere aber dann im .cpp wieder auf 0 setze hab ich ja meinen gewünschte Zeichenfolge wieder nicht im array buffer stehen
 
Wie bereits 2 Mal erwähnt: Du initialisierst nicht im Header, du initialisierst in der Definition in einer CPP-Datei
C++:
class Foo
{
public:
        static int bar[];
};

int Foo::bar[] = { 0 };
 
Ok danke das hat jetzt funktioniert habe jedoch
char buffer[]= { 2 /*STX*/, '1', '0', '0', '1', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',' ', 3 /*ETX*/ };
im Konstruktor aufgerufen!!
Trotzdem danke vielmals für deine Geduld mit mir.
Eine Frage noch hast du irgendeine Idee wie man diesen ASCII String dynamisch in solch einen Buffer laden kann
 
Wenn du das im Konstruktor aufrufst initialisierst du die im Konstruktor lokale Variable buffer mit den Werten was überhaupt keinen Einfluss auf den Member buffer deiner Klasse hat.

Indem du über new ein dynamisches char-Array allozierst und dieses mit deinen Werten beschreibst.
 
Ok danke das hat jetzt funktioniert habe jedoch
char buffer[]= { 2 /*STX*/, '1', '0', '0', '1', ' ', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',' ', 3 /*ETX*/ };
im Konstruktor aufgerufen!!
Das funktioniert dann aber nicht, da diese Variable nur lokal im Konstruktor vorliegt. Du mußt es so machen wie Cromon bereits sagte.
Eine Frage noch hast du irgendeine Idee wie man diesen ASCII String dynamisch in solch einen Buffer laden kann
C:
char buf[512] = {};

strcpy(buf, "\x021001 00000003\x03");
In C++ würde sich ein std::string anbieten, da dieser den Speicher verwaltet:
C++:
std::string buf;

buf += "\x021001 00000003\x03";

send(buf.data(), buf.size());
Gruß
 
Zuletzt bearbeitet:
Wenn ich
strcpy(buffertest,"\x021001 0000000000 \x03");
Verwende bekomme ich folgende error massage:
error C2022: '135169' : Zu gross für ein Zeichen Fehler beim Ausführen von cl.exe.

Wenn ich std:string buf verwende bekomme ich 5
Error Messages das std und string nicht exestieren ich habe aber <string> eingefügt
 
Wenn ich
strcpy(buffertest,"\x021001 0000000000 \x03");
Verwende bekomme ich folgende error massage:
error C2022: '135169' : Zu gross für ein Zeichen Fehler beim Ausführen von cl.exe.
Du hast buffertest falsch deklariert. Schau dir nochmal meinen Code an.

Und gewöhne dir bitte an, bei einem Fehler 1. deinen Code (und zwar mit allen Deklarationen der Variablen) und 2. die Fehlermeldungen direkt aus dem Output-Fenster zu kopieren und hier einzufügen.
Wenn ich std:string buf verwende bekomme ich 5
Error Messages das std und string nicht exestieren ich habe aber <string> eingefügt
Zeig den konkreten Code und die konkreten Fehlermeldungen.
Cromon hat gesagt.:
Hast du auch den Standard I/O-Header iostream includiert?
Das braucht man aber für std::string nicht.

Gruß

\edit: @seru: Hast du vielleicht string.h statt string eingebunden?
 
Zurück