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

Stefan

Alter Hase

  • »Stefan« ist der Autor dieses Themas

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

1

06.09.2003, 00:20

Problem mit string...

Hallo,

ich habe ein ganz blödes Problem, ich wollte einen string erzeugen und ihn füllen...naja ich dachte eigentlich geht ganz einfach, aber irgendwie möchte es nicht funktionieren!
Ich inkludiere #include <string> und erzeuge den string so:

Quellcode

1
string h = "hallo";


Der Compiler meldet aber immer einen Fehler, das er string nicht kennt, wisst ihr was ich falsch mache...?

Danke

2

06.09.2003, 09:21

Hi,
versuch mal

Quellcode

1
string h("hallo!")
;
ist ein Konstructor dafür.
nofi[/code]

Anonymous

unregistriert

3

06.09.2003, 10:45

std::string h = "hallo";

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

06.09.2003, 11:30

da hat gast recht, du hast vergessen auf den Namespace zuzugreifen!

Oft liest man ja in verschiedenen codes string.h doch diese Header gehören nicht zum standard!

du kannst auf den ganzen namespace mit:

Quellcode

1
using namespace std; // std ist der namespace von C++


oder wenn du gezielt drauf zugreifen willst kannst du schreiben

Quellcode

1
2
3
4
using std::string;

// oder direkt bei der benutzung:
std::string MyString = "Blub"; // Wobei man normalerweise besser den Constructor von std::string aufruft, jedoch ich benutze lieber aus optischen Gründen operator =;


In diesem Sinne,
Auf Wiedersehen ;D

Anonymous

unregistriert

5

06.09.2003, 11:33

Zitat

std::string MyString = "Blub"; // Wobei man normalerweise besser den Constructor von std::string aufruft, jedoch ich benutze lieber aus optischen Gründen operator =;


lol
das ist der konstruktor. oder meinst du das objekt wird in diesem fall nicht über den konstruiert?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

06.09.2003, 11:54

doch aber bekommt den Inhalt in diesem fall "Blub" über einen Operator übergeben und nicht über C'tor.

Quellcode

1
2
3
4
5
6
7
8
9
string::string (const char* text) : m_text (text)
{
}

// ist nicht äquivalent zu
string::operator = (const char *text)
{
      m_text = text; // Okay ich weis ist baba aber weis net ob string die funktion strcpy (); benutzt.
}


Und der Konstruktor wird in meinem beispiel leer bleiben und string bekommt erst den Text beim operator = aufruf.

Falls ich mich irre lasse ich mich gerne eines Besseren belehren :)

In diesem Sinne,
Auf Wiedersehen ;D

Anonymous

unregistriert

7

06.09.2003, 11:57

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
class Test
{
public:
    Test(int i)
    {
    }
};

int main()
{
    Test t = 10;
}


Das sollte alles sagen. Hat überhaupt nichts mit operator= zu tun.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

8

06.09.2003, 12:16

okay stimmt :) danke jetzt weis ich mehr :D

Anonymous

unregistriert

9

06.09.2003, 12:50

nur noch so als hinweis: wenn man solch eine zuweisung verhindern will, muss man den konstruktor 'explicit' machen.

Stefan

Alter Hase

  • »Stefan« ist der Autor dieses Themas

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

10

06.09.2003, 19:43

Danke für eure vielen hilfreichen Antwort, es funktioniert nun! :)

Werbeanzeige