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

MrMonkey

Frischling

  • »MrMonkey« ist der Autor dieses Themas

Beiträge: 25

Beruf: Azubi

  • Private Nachricht senden

1

11.07.2010, 14:25

Kapitel 11.2 .c_str()

Hallo ich bins mal wieder..
Das mit den Standardwerten in den Funktionsparametern hab ich verstanden allerdings ist mir eine ganz andere Frage aufgekommen.
Hier mal der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// C++ für Spieleprogrammierer
// Listing 11.1
// Standardwerte für Funktionsparameter
//
#include <iostream>

using namespace std;

// Prototypen
//
void ErstelleButton (const string &sText,
                     int Breite = 100, int Hoehe = 30);

// Hauptprogramm
//
int main ()
{
    // Einige Buttons erstellen
    ErstelleButton ("Kleines Icon 1");
    ErstelleButton ("Kleines Icon 2");
    ErstelleButton ("Mittleres Icon", 150, 45);
    ErstelleButton ("Grosses Icon 1", 200, 60);
    ErstelleButton ("Kleines Icon 3");
    getchar ();
    return (0);
}

// ErstelleButton
//
void ErstelleButton (const string &sText, int Breite, int Hoehe)
{
    // Ausgabe der Buttoninformationen
    cout << "Folgender Button wurde erstellt: " << endl;
    cout << "Text  : " << sText.c_str() << endl;
    cout << "Breite: " << Breite << endl;
    cout << "Hoehe : " << Hoehe << endl;
    cout << endl;

} // ErstelleButton


Warum benutzt man zum aufrufen des Textes (der aus einer Referenz gelsen wird?!)

cout << "Text : " << sText.c_str() << endl;

und warum geht nicht einfach "sText"?
Hab auch schon zurück geblättert aber bei strings nichts in dieser Art gefunden hab wohl irgendwo etwas überlesen ?(

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

11.07.2010, 14:31

Gute Frage. War wohl eine Unachtsamkeit des Autors.
Es gibt eine Überladung für strings, damit du das direkt schreiben kannst.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

3

11.07.2010, 20:25

Im Prinzip stellt sText nur ein Objekt einer Klasse da. Um an den, in ihr gespeicherten Text als Pointer (char *) zu gelangen, ist ein Aufruf von c_str() notwendig. Vielleicht wollte der Autor das nur Vermeiden, damit niemand auf die Idee kommt z.B. MessageBox(NULL, sText, "", NULL); zu schreiben.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

12.07.2010, 00:09

Vielleicht wollte der Autor das nur Vermeiden, damit niemand auf die Idee kommt z.B. MessageBox(NULL, sText, "", NULL); zu schreiben.

Halte ich für sehr weit hergeholt, aber möglich ist es natürlich. :)

Werbeanzeige