Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

1

12.07.2007, 18:34

[Umfrage] sprintf(_s) oder STL stringstream

sprintf(_s) oder STL stringstream?

Insgesamt 21 Stimmen

43%

sprintf(_s) (9)

38%

stringstream (8)

19%

beide (4)

Hi,
ich dachte mir es wäre vllt nicht schlecht, wenn ich öfter STL statt die C Funktionsbibilothek verwende. Tja da hab ich einfach mal bei meinen Zeichenketten angefangen und mich ein bischen in std::string eingearbeitet (hab bisher nicht sonderlich viel mit der STL gemacht). Die fand ich soweit auch ganz komfortabel.... doch dann wollte ich meine vielen sprintf (und ähnliche) beseitigen. Wenn ich da stattdessen STL Funktionen benutezn will, wär ja das Synonym der stringstream.... nur ... den find ich jetzt irgendwie ganz nich mehr sonderlich nett, soweit ich das in einer referenz gesehn hab.

Wie macht ihrs?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

12.07.2007, 18:55

Ähm es geht doch auch folgendes:

C-/C++-Quelltext

1
2
3
4
std::string us = "hallo. deine nummer ist ";
us += ein_Int;
us += "und du heißt";
us += einCharArray;


Aber wo ist das Problem an stringstream?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

12.07.2007, 18:56

Die STL hat keinen stringstream...

Aber wenns um formatierte strings geht hat boost eine tolle Alternative zum veralteten und Typenunsicheren XYZprintf:

C-/C++-Quelltext

1
std::string str = boost::str( boost::format( "%1% %2% %3%" ) % "Hallo" % 10 % 3.1415 );
@D13_Dreinig

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

4

12.07.2007, 19:05

:oops:
Okay ich hätt wohl nich gleich ne umfrage von was machen sollen von dem ich absolut keine Ahnung hab ... sry ....

Ich meinte das hier
http://cppreference.com/cppsstream/index.html
Für was sind die den gut?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

12.07.2007, 19:10

Ich weiß was du meinst und es machen viele den Fehler alles was die C++ Standardlibrary ausmacht als STL zu bezeichnen. Aber die STL ist nur ein Teil der C++ Standardlibrary. Streams (auch der stringstream) ist Teil der Standard C++ I/O Library.

Und in den meisten Fällen sprintf vorzuziehen. Zumindest wenn man C++ machen will! :-)
@D13_Dreinig

  • »Wümpftlbrümpftl« ist der Autor dieses Themas

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

6

12.07.2007, 19:16

Ah okay macht Sinn ^^
Danke! :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

12.07.2007, 19:38

Zitat von »"Nox"«

Ähm es geht doch auch folgendes:

C-/C++-Quelltext

1
2
3
4
std::string us = "hallo. deine nummer ist ";
us += ein_Int;
us += "und du heißt";
us += einCharArray;


Aber wo ist das Problem an stringstream?

Nein, das geht nicht, probier's mal aus. Der int wird in einen char gecastet und dann als einzelnes Zeichen an den String gehängt, nicht als Zahl.

Für Lokalisierung sind sprintf und Ähnliches (dieses boost::format kannte ich noch garnicht, sieht gut aus) das einzig Wahre.
Z.B.:

Deutsch: "Hallo %s, dein letzter Besuch war am %s."
Englisch: "Hello %s, your last visit was on %s."

Sowas kriegt man anders nicht vernünftig hin.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

12.07.2007, 20:01

Ach richtig. Mein Fehler. Habe ausversehen die Stringklasse von Irrlicht genutzt, die das ohne Beanstandungen macht. Bitte um pardon.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

9

12.07.2007, 20:01

Also ich komme mit sprintf super zurecht, und typenunsicherheit ist zwar ne blöde sache, aber bei so einer kleinen funktion merkt man es ja sofort, also ich denke das ist tragbar.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

10

12.07.2007, 21:03

Zitat von »"rewb0rn"«

Also ich komme mit sprintf super zurecht, und typenunsicherheit ist zwar ne blöde sache, aber bei so einer kleinen funktion merkt man es ja sofort, also ich denke das ist tragbar.


Voll deiner Meinung! Verwende schon seit langem sprintf_s... Hatte nie Probleme, und wenn man ein bisschen aufpasst, bekommt man die auch nicht!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige