Ich sollte ein Programm schreiben, das nur die Wörter zeigt, die am Ende einen Großbuchstaben haben.Kann keinen Fehler finden. C++, Strings
Zum Beispiel: „Ein paar Worte nur genau dort“ -> „Ein paar Worte richtig“
Aber es ist etwas falsch mit meinem Code und ich kann keinen Fehler finden. (Sorry für diesen Code, könnte es wirklich vermasselt werden)
string LastUpperSymbol(string text) {
int i = 0, space, next, sortEl = 0;
string textcopy = text;
int size = textcopy.size();
string sorted;
string alph = "abcdefghijklmnopqrstuvwxyz ";
if (textcopy[0] != alph[26]) {
space = text.find(" ");
if(isupper(textcopy[space-1])) {
sorted.append(textcopy, 0, space+1);
}
while(space < textcopy.size()) {
next = space+1;
space = text.find(" ", next);
if(space == -1) {
if(isupper(textcopy[size])) {
sorted.append(textcopy, next, textcopy[size]);
}
break;
}
else if(isupper(textcopy[space-1])) {
sorted.append(textcopy, next, space+1);
}
}
}
else {
//something
}
cout << sorted << endl;
return text;
}
int main() {
string text = "somE wordS just RighT there";
cout << LastUpperSymbol(text);
system("PAUSE");
}
Es ist wahrscheinlich, dass Ihre Zeichenfolgenimplementierung ein Debug-Flag hat, das Sie verwenden können, um Dinge wie Out-of-Bounds-Prüfungen zu aktivieren, obwohl ich an andere Bibliotheksteile denken könnte. Wenn nichts anderes möglich ist, können Out-of-Bounds mit 'at' anstelle von '[]' laut gemacht werden. Sie können auch ein Sanitizer-Tool ausprobieren. – chris
Mein Rat ist, zu lernen, wie Sie Ihren Debugger verwenden, um einen Schritt durch den Code zu gehen und Variablen bei jedem Schritt zu betrachten. – drescherjm
Überprüfen Sie immer das Ergebnis von 'find', um sicherzustellen, dass es nicht' std :: string :: npos' ist. – NathanOliver