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

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

11

19.06.2009, 19:04

Code bitte...
<< an dieser Stelle ist eine Signatur verstorben >>

12

19.06.2009, 19:37

zuerst

C-/C++-Quelltext

1
vector<char> Wort(Buchstaben); 

und dann

C-/C++-Quelltext

1
 cin.get (Wort [Buchstaben]);
<- hier ist der fehler
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

13

19.06.2009, 19:40

Du hast einen ungültigen Index angegeben.

Und es kommt nicht irgendein Fehler. Wenn du ihn schon nicht lesen willst, kannst du ihn wenigstens hier reinkopieren...

14

19.06.2009, 19:53

es ist kein compiler fehler
http://img25.imageshack.us/img25/5096/fehler1p.jpg wird mir
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

15

19.06.2009, 19:55

Der Fehler ist doch eindeutig, steht da: "Vector subscript out of range"
Viel präziser geht es doch kaum.
<< an dieser Stelle ist eine Signatur verstorben >>

16

19.06.2009, 19:56

Zitat von »"Flonk"«

es ist kein compiler fehler
http://img25.imageshack.us/img25/5096/fehler1p.jpg wird mir

Man kann auch Laufzeitfehler lesen. Bei dir steht ja geradezu, was du falsch gemacht hast. Innert 3 Sekunden hättest du den Fehler gehabt.

Zitat

vector subscript out of range

Genauer kann man es wohl kaum noch beschreiben! Wenn dir die STL schon die Macht gibt, so viele Fehler über Assertions abzufangen, dann nutze diese doch bitte.

17

19.06.2009, 20:21

okay so weit bin ich noch gar nicht, da ich eig. noch gar nicht mit vektoren arbeite... :oops:
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

18

19.06.2009, 21:41

ich glaube für deinen zweck ist std::string doch die bessere lösung.
am ende wirds komplizierter als es sein muss.

std::vector ist ein dynamisches array. punkt. für strings ist es nur
in maßen geeignet.

std::string ist ausschließlich (!) für wörter und sätze -> text eben.
es gibt da sogar sonderfunktionen von std::cin für, dazu später mehr.

da man in C++ von 0 aus anfängt, dass array / string / whatever
durchzuzählen, ist Wort[Buchstabe] genau eins zu viel.

das ist ein sehr (!) häufiger und beliebter fehler mit vektoren (und arrays).

std::cin bietet dazu, in verbindung mit std::string die freie funktion
getline an, die

die ganze zeile einliest, was du vermutlich willst (also alles was mit dem <Enter> eingegeben wurde)
dir das ergebnis als std::string liefert (die klasse lohnt sich zu lernen)
und sich nebenbei auchnoch um die größe kümmert.

verwendung:

C-/C++-Quelltext

1
2
3
4
5
6
#include <string> // wichtig für alle strings, mehr musst du nicht tun


std::string Wort; // leerer string

std::getline(std::cin, Wort);

// in Wort steht jetzt alles was eingegeben wurde.


wenn du bei den Vektoren bleiben willst, kannst du den string auch
umkopieren und nur als temporären eingabebuffer nutzen:

C-/C++-Quelltext

1
2
3
4
5
6
std::vector<char> vec; // dein vektor, irgentwo anders deklariert


// ....


vec.resize(Wort.size() + 1); // vektor entsprechend anpassen und platz für die nullterminierung lassen

std::copy(Wort.begin(), Wort.end(), vec.begin()); // alles zwischen begin und end kopieren


so alles schon standardkonform

vektoren und strings sollte jeder beherrschen, sie erleichtern einem
das leben deutlich


hoffe, ich konnte dir helfen
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

19

19.06.2009, 22:25

Danke... Strings sind echt einfacher.
Und wie greife ich bei strings auf EINEN buchstaben zu?
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

19.06.2009, 22:54

versuchs mal mit [] ;)

Werbeanzeige