Anzeige ein Vektor von strings in C++
Tut mir Leid wenn das wiederholt Frage, aber ich habe bereits versucht nach Antworten zu suchen-und kam mit leeren Händen. Also im Grunde will ich nur hinzufügen-strings (einzelne Wörter) auf der Rückseite eines Vektors und dann die Anzeige des gespeicherten strings als einzelne Zeichenfolge. Ich bin ganz der rookie.
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main(int a, char* b [])
{
vector<string> userString;
string word;
string sentence = "";
for (decltype(userString.size()) i = 0; i <= userString.size() - 1; i++)
{
cin >> word;
userString.push_back(word);
sentence += userString[i] + " ";
}
cout << sentence;
system("PAUSE");
return 0;
}
Warum funktioniert das nicht?
BEARBEITEN
int main(int a, char* b [])
{
cout << "Enter a sequence of words. Enter '.' \n";
vector<string> userString;
string word;
string sentence = ""; /
int wordCount = 0;
while (getline(cin, word))
{
if (word == ".")
{
break;
}
userString.push_back(word);
}
for (decltype(userString.size()) i = 0; i <= userString.size() - 1; i++)
{
sentence += userString[i] + " ";
wordCount += 1;
if (wordCount == 8)
{
sentence = sentence + "\n";
wordCount = 0;
}
}
cout << sentence << endl;
system("PAUSE");
return 0;
}
Also mein neues Programm funktioniert. Es legt einfach Werte, die auf der Rückseite eines Vektors und druckt Sie aus 8 Wörtern in einer Zeile. Ich weiß, es gibt einfachere Wege, aber ich bin nur zu lernen, Vektoren, und ich werde in kleinen Schritten. Vielen Dank für die Hilfe Jungs.
"Vielen Dank für die Hilfe Jungs.", also, warum nicht Sie markieren Sie die "Antwort" dann?
Also, was ist die akzeptierte Antwort hier?
Also, was ist die akzeptierte Antwort hier?
InformationsquelleAutor RudolphRedNose | 2013-07-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil userString leer ist. Sie nur erklären, es
aber nie etwas, so die for-Schleife gar nicht ausgeführt.
InformationsquelleAutor Oleksiy
Ihre
vector<string> userString
hat Größe0
, so wird die Schleife nie betreten. Man startet mit einem Vektor, der eine bestimmte Größe:obwohl es ist nicht klar, warum benötigen Sie den Vektor an alle:
Wenn Sie nicht wollen, zu einem fixed-limit auf die Anzahl der input-Worte, die Sie verwenden können
std::getline
imwhile
Schleife, die Prüfung gegen eine bestimmte Eingabe, z.B."q"
:Diese fügen Worte zu
sentence
bis man "q".sicher, man hätte zuweisen, die über
operator[]
.danke für den Hinweis, ich war versucht, weisen Sie auf einen leeren Vektor. Der Grund, warum ich verwendet haben ein Vektor ist, denn ich unterrichte mich und ich hatte gerade das Thema Vektoren. Ich bin mir wohl bewusst, dass es ein einfacher Weg, es zu tun. Übrigens, Ihr erinnert mich von getline() hat mir geholfen, mehr, als Sie denken.
InformationsquelleAutor juanchopanza
Haben Sie zum einfügen der Elemente mit der insert - Methode präsentieren, die in Vektoren STL, überprüfen Sie die unter Programm hinzufügen, um die Elemente, und Sie können in der gleichen Art und Weise in Ihrem Programm.
InformationsquelleAutor Mahesh
Ihnen zwei Fragen; Ihr Titel sagt, die "Anzeige ein Vektor von strings", aber du bist nicht wirklich tun, dass Sie tatsächlich bauen Sie eine einzelne Zeichenfolge, die aus allen strings und Ausgabe.
Ihre Frage Körper fragt, "Warum funktioniert das nicht".
Es funktioniert nicht, da deine for-Schleife ist bedingt durch die "userString.Größe ()", die 0 ist, und testen Sie Ihre Schleife variable für "userString.size() - 1". Die Bedingung einer for () - Schleife getestet wird, bevor es erlaubt die Ausführung der ersten iteration.
gedruckt wird genau nichts.
Also deine Schleife genau keine Iterationen, verlassen userString und Satz leer.
Schließlich, Ihr code hat absolut null Grund für die Verwendung eines Vektors. Die Tatsache, dass Sie verwendet "decltype(userString.size())" anstelle von "size_t" oder "auto", während Sie behaupten, ein rookie, schlägt man entweder ein Buch Lesen, von hinten nach vorne oder Sie setzen sich bis zum scheitern der a-Klasse.
Also um deine Frage zu beantworten, am Ende deines post: Es funktioniert nicht, weil Sie nicht durch den Schritt, es mit einem debugger und prüfen Sie die Werte, wie es ging. Während ich sagen, dass es tongue-in-cheek, ich werde es raus.
InformationsquelleAutor kfsone
vector.size()
gibt die Größe eines Vektors. Sie hat nicht eine beliebige Zeichenfolge in den Vektor vor der Schleife , so dass die Größe des Vektors ist 0. Es wird nie geben Sie die Schleife. Zuerst einige Daten in den vector und dann versuchen Sie, um Sie hinzuzufügen. Sie können Eingaben des Benutzers für die Anzahl der string-Benutzer eingeben will.andere Sache, die man eigentlich nicht haben, verwenden Sie einen Vektor, dies zu tun.Zwei strings können die Arbeit für Sie erledigen.
und wenn Sie möchten, geben Sie string, bis der Benutzer es wünschen , wird der code wie dieser:
size
ist ein besserer name alsSIZE
InformationsquelleAutor lukai