Und zwar folgendes:
Das Beispiel aus dem Anhang liefert den Compilerfehler, der ebenfalls im Anhang steht. Als workaround klappt das Einsetzen eines strings, d.h. man macht
std::string string = s.str(); c = string.c_str();
Ich finde es aber doof, immer eine Zusatzvariable mit rumzuschleppen. Weiss jemand, wie man das loest?
cu, Ulf
On Fri, Jul 19, 2002 at 12:34:01AM +0200, Ulf Lorenz wrote:
steht. Als workaround klappt das Einsetzen eines strings, d.h. man macht
std::string string = s.str(); c = string.c_str();
const char* c = string(s.str()).c_str(); oder const char* c = static_cast<string>(s.str()).c_str();
Warum auch immer.
Best regards from Dresden Viele Gruesse aus Dresden Heiko Schlittermann
Am Freitag, dem 19. Juli 2002 um 09:04:54, schrieb Heiko Schlittermann:
const char* c = string(s.str()).c_str();
oder const char* c = static_cast<string>(s.str()).c_str();
Warum reicht nicht
const char* c = s.str();
?
Übrigens ist strstream furchtbar veraltet, aber das hatten wir schon mehrmals diskutiert.
Torsten
On Fri, Jul 19, 2002 at 09:31:09AM +0200, Torsten Werner wrote:
Warum reicht nicht
const char* c = s.str();
Ahh, danke. Das bringt dir wieder eine Frage ein. :)
Wenn ich eine Funktion habe, die einen string zurueckliefert, und ich schreibe
std::strstream s; return (s.str());
wird mit dem char* also automatisch ein string initialisiert?
Übrigens ist strstream furchtbar veraltet, aber das hatten wir schon mehrmals diskutiert.
Das Problem ist, dass, soweit ich das gesehen habe, die STL nichts anderes dafuer mitliefert (im Stroustrup von vor 3 Jahren steht nur ein ostringstream drin und ich denke mal, das ist _die_ Referenz) und ich keine zusaetzlichen Abhaengigkeiten haben moechte. Ist strstream trotz Veraltetsein immer noch im Standard drin oder etwa deprecated, weil du so dagegen bist?
Torsten
Ulf
Am Freitag, dem 19. Juli 2002 um 22:18:37, schrieb Ulf Lorenz:
Wenn ich eine Funktion habe, die einen string zurueckliefert, und ich schreibe
std::strstream s; return (s.str());
wird mit dem char* also automatisch ein string initialisiert?
Ja, aber du musst beachten, dass s nicht auf irgendwelchem lokalen Speicher beruht, der am Ende der Funktion automatisch freigegeben wird. Ausserdem kannst du auch einfach kürzer schreiben:
return s.str();
Das Problem ist, dass, soweit ich das gesehen habe, die STL nichts anderes dafuer mitliefert (im Stroustrup von vor 3 Jahren steht nur ein ostringstream drin und ich denke mal, das ist _die_ Referenz) und ich keine zusaetzlichen Abhaengigkeiten haben moechte.
Naja das gilt nur für gcc < 3 und auch für den gibt es eine separate sstream-Implementierung, da musst du nur mal im Netz suchen. Alternativ hätte ich noch folgendes anzubieten: ;-)
$ dpkg -s libstlport4.5-dev Package: libstlport4.5-dev Status: install ok installed Priority: optional Section: libs Installed-Size: 3452 Maintainer: Torsten Werner twerner@debian.org Source: stlport4.5 Version: 4.5.3-2 Replaces: libstlport-dev Provides: libstlport-dev Depends: libstlport4.5 (= 4.5.3-2) Suggests: stl-manual, libstlport4.5-dbg Conflicts: libstlport-dev Description: STLport development files STLport is a open-source, volunteer-driven project. Its goal is to build complete, multiplatform ANSI C++ Standard Library with SGI STL code base. From this base, it inherits the following advantages : + Advanced technology for maximum efficiency + Exception safety and thread safety + Standard compliance and reliability + Important extensions - hash tables, singly-linked list, rope . For more information on STLport visit the web page http://www.stlport.org/ .
Torsten
lug-dd@mailman.schlittermann.de