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