Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Erzeugung eines dynamisch langen **char in c++

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 ] > 2 <
010
07.04.2005, 07:55 Uhr
~lisan
Gast


Ja, das funktioniert soweit ganz gut, trotzdem muss ich da ich ein char** brauche das ganze vom vector/liste was auch immer in ein char[] kopieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
07.04.2005, 07:59 Uhr
~lisan
Gast


@lisan erst lesen dann schreiben!

Sry, deine loesung funktioniert natuerlich, hab das get uebersehen

Danke euch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
07.04.2005, 08:20 Uhr
~lisan
Gast


Ich fummel das template um, so dass es auch char** erzeugen kann.

Wie kann ich einen const char* einen char* schreiben ohne sprintf zu verwenden ?
new char (s.c_str()) will nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
07.04.2005, 08:26 Uhr
(un)wissender
Niveauwart


@virtual

Ich habe die Herkunft nicht beachtet, wenn schon ein std::string vorliegt sieht die Sache anderes aus. Wenn nicht, dann bin ich immer noch der Meinung, dass std::vector<char*> perfekt ist. Große Performanz und wenig Arbeit. Und die char* muss man ggf. löschen, klar. Oder man nimmt einen Wrapper, der das für einen tut.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
07.04.2005, 08:34 Uhr
(un)wissender
Niveauwart


@lisan
Es erzeugt bereits char**, genauer gesagt const char ** im Beispiel. Er nimmt als Attribut T* und wenn du char* übergibst haste (char*)*. Also alles schon fertig.
In const char * kann man nichts schreiben, da es ja const char* ist und nicht char*. Also entweder char * verwenden oder Design überdenken. Zu Not const_cast verwenden, aber eigentlich sollte man sowas lassen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
07.04.2005, 09:51 Uhr
~lisan
Gast


Ok,

das laeuft soweit, ich hab das jetzt so gebaut:

static const char* const_cpp2cstr(const std::string& s) { return s.c_str(); }
static char* cpp2cstr(std::string& s) { char* foo = new char[s.size()+1]; sprintf(foo, s.c_str() ); return foo; }

Ich hab nun probleme den << fuer das template zu ueberladen, ich haette gern so etwas:
std::vector<char*> l;
c_array<char*> cmdargs(l);

std::cout << cmdargs << std::endl;

Mein Versuch:
std::ostream& operator<<(c_array& carray)
{
std::stringstream str;
for (unsigned int i = 0; i<carray.size(); i++) {
str << carray.get()[i];
if (i+1<carray.size())
str << " ";
}

return str.str();
}
scheitert leider.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
07.04.2005, 10:35 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
template<T>
  std::ostream& operator<<(c_array<T>& carray)
...


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
07.04.2005, 10:36 Uhr
virtual
Sexiest Bit alive
(Operator)


Hm, wo gibst Du denn den Speicher frei, den Du gemäß Post 015 belegt hast? - So wie es da steht ists ein fettes Speicherloch.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
07.04.2005, 11:11 Uhr
~lisan
Gast


Ist nur nen schneller entwurf gewesen, meine nase steckt schon in valgrind.
Ich denke ich werde es im destruktor irgendwo machen.

Die Klasse fuer die ich den char** zusammenbasteln muss macht hoffentlich nicht irgendwann nochmal was damit. Ich werde es ja merken.
Ich nehme aber an, dass jemand zu faul war ein const davor zu setzten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: