So haben wir eine optionale Zuordnung in unserer C++ - Klasse. Die Zuordnung ist im Grunde diese:Iterieren durch Zeichen einer Zeichenfolge in einem Vektor gespeichert, um Zeichen zu ersetzen C++
Write a program that holds a string of at least 8 words.
Do the following:
1. Replace the letters of first word with '?'
2. Turn the letters of the last word to uppercase
Wir haben noch nicht studieren Vektoren in unserer Klasse.
Als ich zuerst die Aufgabe las, schien die Speicherung der Strings in einem Vektor eine gute Idee zu sein, also ging ich damit um.
Um die Zeichen durch ein '?' Ich habe eine for-Schleife benutzt. Ich weiß, dass das nicht funktionieren würde, wenn ich nur bestimmte Zeichen oder jedes andere Zeichen zu einem '?' Ändern müsste.
Mein Problem ist mit Konvertieren von Zeichen einer Zeichenfolge in Großbuchstaben. Mein Denkprozess war: For-Schleife durchläuft alle Zeichen im letzten Wort, wenn das Zeichen in Kleinbuchstaben ist, wird es in Großbuchstaben umgewandelt, wenn es bereits in Großbuchstaben ist, ändert es sich nicht.
Ich glaube, dass mein Ansatz für dieses Problem funktionieren könnte, ich habe mich vielleicht einfach nicht korrekt ausgedrückt oder irgendwo einen dummen Fehler gemacht. Könnte mir jemand helfen oder mich in die richtige Richtung drängen? Welche anderen Optionen gibt es, um alle Zeichen eines in einem Vektor gespeicherten Strings zu durchlaufen? Gibt es einen anderen Ansatz, der dafür besser funktionieren könnte? Vielen Dank für Ihre Zeit.
#include <vector>
#include <cctype>
#include <string>
#include <iostream>
using namespace std;
vector<string>words;
//stores words to vector words
void storeWords()
{
cout << "Input 8 words: " << endl;
string s = " ";
for(int i=0; i<=7; i++)
{
cin >> s;
words.push_back(s);
}
}
//prints our words
void printWords()
{
cout << "\n Words stored in vector: " << endl;
for (const string s : words)
cout << s << endl;
}
//replaces chars of the first word with a '?' sign
void replace1(vector<string>&v)
{
cout << "\nReplaced characters of the first word " << words[0] << " with '?'" << endl;
for (char c : words[0])
cout << "?";
}
void replace2(vector<string>&v)
{
for (char c : words[7])
{
if(islower(c))
c = toupper(c);
}
cout << endl;
cout << words[7]<<endl;
}
int main()
{
storeWords();
printWords();
replace1(words);
replace2(words);
return 0;
}
Warum iterieren nicht nur über String, von Anfang an und vom Ende bis zum ersten Leerzeichen der entsprechenden Änderungen zu tun? Was Ihre Frage betrifft, so vermissen Sie '&' in den for-Schleifen, um Ihre 'c'-Variable an den tatsächlichen Wert in der Zeichenfolge zu binden, anstatt sie zu kopieren. – Gasper
Jahr Code tut nicht, was die Aufgabe sagt. Es heißt "Schreibe ein Programm, das eine Kette von mindestens 8 Wörtern enthält." es heißt nicht "frage nach 8 Wörtern".Sie müssen eine Zeile lesen (getline) die Wörter verschüttet und die ersten und letzten identifizieren – pm100
replace1 scheint wie ein Cheat, Sie haben die gespeicherte Zeichenfolge nicht geändert. – pm100