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

1

15.06.2012, 23:05

[SOLVED] c++ char Array mit geteilten strings (Nummerierung) bitte um hilfe

Hey Leute

Ich habe vor kurzer zeit angefangen zu programmieren mittels C++.
Meine frage bezieht sich auf arrays. Ich möchte ein char array erstellen was sozusagen nummeriert ist, das heißt ich kann z.b ein wort per zahl aufrufen.

Ich geb am besten mal ein beispiel, ich habe ein skill array mit verschiedenen attack also z.b int skill[] = {100,200,300}, das soll jetzt die stärke des jeweiligen skills sein, also der dmg den der skill entspricht.

Dazu möchte ich nun auch logischerweise den Namen noch dazu haben sprich skillname[] = {"aura", "stun", "flash"}

Die Namen sind so angeordnet wie der schaden vom jeweiligen skill sein soll, aber wie schon gesagt, die strings werden nicht nummeriert, und der compiler sagt

C:\Dokumente und Einstellungen\Leridan\Desktop\Pokemon\array skill test.cpp|18|error: invalid conversion from `const char*' to `char'|

Gibt es da vielleicht eine möglichkeit?

Ich hoffe mal ja

Gruß Leri

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »leri« (15.06.2012, 23:37)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

15.06.2012, 23:14

C-/C++-Quelltext

1
const char* skillname[] = {"aura", "stun", "flash"};


Ich vermute mal, du hattest nur ein einfaches char Array gemacht. Was du willst ist aber ein Array aus Strings...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

15.06.2012, 23:16

Ja, es gibt eine Möglichkeit. Da c-strings besonders in Kombination mit Arrays recht kompliziert zu handhaben sind kannst du dein Vorhaben entweder auf später verschieben, weil du wahrscheinlich noch ein wenig lernen und üben musst um es zu verstehen oder du greifst etwas vor und schaust dir std::string und std::vector an. Informationen dazu findest du zum Beispiel hier: http://www.cplusplus.com/reference/stl/vector/
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

4

15.06.2012, 23:23

um nochmal schnell auf das wesentliche zu kommen
ich hab 1 array das mit werten gefüllt ist und 1 array was namen ausgeben soll

int skillattribute[] = {100,200,300};
char skillname[] ={ attacke 1, attacke2, attacke3}

so jetzt habe ich 1 variable die per cin gefüllt wird mit einem wert von 1-2.
sagen wir mal
int auswahl =2;

mit dieser will ich dann per cout den jeweiligen namen und den wert des attacks ausgeben
also wie folgt

int skillattribute[] = {100,200,300};
char skillname[] ={ attacke 1, attacke2, attacke3}

so nun will ich je nachdem was bei auswahl für eine zahl eingegeben wurde den skill ausgeben also so

cout << skillattribute[auswahl] << endl;
cout << skillname[auswahl] << endl;

mein problem ist, das die verschiedenen namen der skills nicht getrennt werden um array, ich brauche also eine möglichkeit, die die strings im array teilt, so das sie per 0,1,2 augerufen werden können

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

15.06.2012, 23:24

Mit anderen Worten: Du willst ein Array aus Strings:

C-/C++-Quelltext

1
const char* skillname[] = {"aura", "stun", "flash"};

;)

6

15.06.2012, 23:27

darf ich fragen warum genau davor ein const jetzt musste?^^ und warumd as sternchen nach char ist

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

15.06.2012, 23:32

Weil es sich um ein Array aus Pointern (darum das Sternchen) auf Stringliterale handelt. Und diese sind vom Typ const char[].

8

15.06.2012, 23:32

Erstmal danke ^^ klappt wunderbar, hätte nicht gedacht, das die Lösung jetzt so einfach wäre :D

9

15.06.2012, 23:34

achso, das heißt also ich greife mit dem pointer also auf den jeweiligen string zu, das heißt ich entnehme sozusagen den wert string 1, und je nachdem was ich dann habe den string 2,3,4 oder 5 ^^.

Pointer hab ich schon ein bisschen durchgelesen der nimmt ja nur die werte nicht die variable an sich

FSA

Community-Fossil

  • Private Nachricht senden

10

16.06.2012, 00:17

Naja "er" nimmt die Adresse, wo die Werte stehen aus dem Speicher.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige