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

11

27.07.2003, 18:29

Auf http://cpp.programmersbase.net/ gibt es eine Beschreibung.

PS: Ist jemanden schon aufgefallen das der Aktuelle Stand nur 99% ergibt :) (55%, 33%, 0%, 11%) Ein gutes Beispiel für die Ungenauigkeit von Integern ;)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

12

28.07.2003, 12:29

Hi,

ich hab auch mal ne Frage zu den std::strings.
Wenn ich mir mit

Quellcode

1
SendMessage(Edit, WM_GETTEXT, 256, (long)FileName.c_str());

den Text aus einem Editfeld holen will, habe ich das gleiche Problem mit der Länge, wie bei char[] oder char *.

Zitat von »"DragonMaster"«


...und man bekommt einfach keine Probleme mit den längen.

Weil wenn ich

Quellcode

1
string FileName;

schreibe und dann den Zeiger der SendMessage-Funktion übergebe und ihn mit 256 Zeichen füllen lasse, dann schreibt er doch über den Speicherbereich von FileNames-Char-Array hinaus, oder?
Ich müsste also diesen hier machen

Quellcode

1
string FileName(256, ' ');


Gibts da keine elegantere Lösung



Noch etwas:
Wieso funktioniert

Quellcode

1
2
3
4
5
6
7
das
int x = 123;
string Text = "Blabla" + x;

und das

cout << Text;

nicht

13

28.07.2003, 16:35

Wenn man nur schreibt

Quellcode

1
std::string str;
Dann ist str leer. Die Funktion const char* std::string::c_str() erzeugt einen C-String (nicht die Klasse CString!) Also NULL Terminiert. Wenn in str aber kein String enthalten ist, gibt c_str() auch nischt zurück. Des weiteren kann man über diese Methode std::string auch nett füllen. Hier liegt einfach ein Designkonflikt zwischen C und C++ vor. SendMessage ist eine C Funktion und da gibt es std::string nett, daher muss ein String auch auf die C Typische weise verarbeitet werden.

Quellcode

1
2
int x = 123; 
string Text = "Blabla" + x;
Funktioniert deswegen nett weil es keinen Additionsoperator für Integer gibt.

Quellcode

1
cout << Text;
Funktioniert wohl. Du siehst aber wohl nichts, da du std::endl vergessen hast. Der String in 'Text' liegt noch im Stream Puffer. Erst std::endl leer den Stream Puffer und veranlast std::cout den Stream auf die Console auszugeben.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

14

28.07.2003, 16:37

wie kann ich dann einen Integer an den String anhängen?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

15

28.07.2003, 16:38

Zitat von »"_progger_"«

wie kann ich dann einen Integer an den String anhängen?

indem man ihn zu einem Char macht :)

16

28.07.2003, 16:45

so?

Quellcode

1
2
3
int x = 123;
string Text = "123 + " + (char)x + " = 246";
cout << Text << endl;


Waäre de Ausgabe dann:
123 + 123 = 246?

Ne, das kann doch garnet sein.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

17

28.07.2003, 16:51

du kannst mit meinem string keine int oder sonst was addieren, du kannst nur den int in einen string machen :)

aber wozu sollte man mit std::string 2 ints addieren? das ist doch schwachsinn!

18

28.07.2003, 16:57

nene, das mach ich auch nicht, vielleicht war der code oben etwas zu kompliziert für dich :-D

Mal anders.

Quellcode

1
2
int x = 16;
string Ich = "Ich bin " + x + " Jahre alt"

So, schön, ich weiß, dass das nicht geht. Könntest du mir sagen wie man es realisieren könnte! Danke!

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

19

28.07.2003, 17:01

klar, mit std::stringsteam; (oder std::ostringstream; weis grad net genau)

Quellcode

1
2
3
std::stringstream mystream; // oder std::ostringstream

mystream << "Ich bin " << 16 << " Jahre alt!";

20

28.07.2003, 17:13

aha, und wie komme ich von stringstream wieder nach string?
Ein Gespenst geht um in Europa...

Werbeanzeige