Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char in Pointer mit String einfügen?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.11.2003, 09:14 Uhr
~RIP
Gast


Ich habe mir eine Konsole für ein Programm geschrieben - das ganze hat ohne dynamische Speicherreservierung perfekt funktioniert ... jetzt wollte ich das ganze noch Perfektionieren indem ich den Speicher dynamisch reserviere.

Ich habe eine Klasse cConsole mit der public Variable:

C++:
char **cmd;
// ... Konstruktor und Destruktor
cConsole :: cConsole()
{
    cmd     = new char*("");
}

cConsole :: ~cConsole()
{
    delete *cmd;
}


... dann habe ich von cConsole das Objekt Console erzeugt...

DAS PROBLEM:
Ich will in *cmd noch ein Zeichen an einer belibigen Stelle im String einfügen?
Wie geht das? Ich habs so probiert ... schmiert aber ab ...

C++:
*Console.cmd[cursorpos]='A';


Die cursorposition ist aber nie größer als der String in *Console.cmd...(:mauer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.11.2003, 11:53 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


kann ja auch nicht gehen
du hast ein char doppelpointer cmd;


C++:
cmd     = new char*("");


hier läst du cmd auf ein chararry zeigen das den string "" beinhaltet.

den speicher freigeben musst du genauso wie du ihn allokiert hast.


C++:
delete cmd;



was mir nicht ganz klar ist was du damit machen willst. (du hast dir quasi einen pointer erzeugt der auf nen string zeigt)
wenn du nur einen string brauchst kannst du doch direkt ein char*-buffer nehmen und brauchst keinen doppelpointer

da du ja objectorientiert zu proggen scheinst (und damit c++) steht dir die STL zur verfügung.
Wenn du deinem String beliebig verändern willst würde ich dir empfehlen einfach ein std::string zu verwerden, da brauchst du dich dann ums speichermanagement nicht zu kümmern
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 29.11.2003 um 11:54 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.11.2003, 19:23 Uhr
~RIP
Gast


Also cmd sollte den String speichern der gerade in die Konsole eingegeben wird
- alles was du gesagt hast war richtig ... ich mache zum ersten mal etwas mit dynamischer Speicherreservierung - da blick ich noch nicht ganz durch -> deswegen ist auch dieser Doppelpointer entstanden ;-)

Das eingeben eines Befehls in die Konsole funktioniert jetzt. Da ich aber noch Befehle anzeigen (bzw. später vielleicht noch mal aufrufen) will soll die Konsole 100 Befehle in einem dynamischen Array speichern ... ist das jetzt richtig wenn ich das so mache:

C++:
class cConsole
{
    public:
    char    *cmd;
    char    *oldcmds[100]; // soll bis zu 100 Strings speichern können

    cConsole();
    ~cConsole();
// hier stehen noch Funktionen zum zeichnen der Konsole im OpenGL-Fenster
// und noch viel mehr ...
};

// Konstruktor und Destruktor
cConsole :: cConsole()
{
    cmd     = new char;
    for (loop=0;loop<100;loop++)
    {
        oldcmds[loop] = new char;
    }
}

cConsole :: ~cConsole()
{
    delete cmd;
    for (loop=0;loop<100;loop++)
    {
        delete oldcmds[loop];
    }
}

cConsole Console;  // Objekt Console erzeugen

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.11.2003, 19:45 Uhr
Pablo
Supertux
(Operator)


Nur eine Frage: wenn du schon C++ benutzt und Klassen nimmst, wieso nimmst du nicht die STL Klasse string statt char* und char[]? Das ist meiner Meinung nach viel einfacher als nur char*. Wenn man nicht immer mit char*s arbeitet, macht man viele Fehler, und obwohl ich schon lange mit char* und char [] arbeite, mache ich noch da Fehler. Ich würde an deiner Stelle lieber strings zu nehmen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: