Ich versuche, ein Programm in C++ zu schreiben, um eine Zeichenfolge zu normalisieren, indem ich jeden Großbuchstaben in Kleinbuchstaben umwandelt.String.length() gibt ein falsches Ergebnis zurück
Auch ich habe es mit einigen Sonderzeichen zu tun, da meine Muttersprache Spanisch ist, und es soll auch mit spanischen Wörtern funktionieren. Aus irgendeinem Grund gab ich eine Zeichenfolge von meinem normalize()
zurück, konnte aber nicht cout
es.
Also, damit es funktioniert, musste ich es ausdrucken, als ob es ein Array wäre, und es funktionierte für die meisten Fälle, weil ich word.length()
benutzte. Als ich jedoch zu result.length()
wechselte, gab es mir immer eine gerade 0
. Ich kann nicht herausfinden, was das Problem ist, vielleicht muss ich einen Nullabschluss hinzufügen, um zu length()
so zu arbeiten, kann seine Arbeit tun?
#include <iostream>
#include <string>
using namespace std;
string normalize(string word)
{
string result;
int j = 0;
for (int i = 0; i < word.length(); i++)
{
if (word[i] >= 'A' && word[i] <= 'Z')
{
result[j] = tolower(word[i]);
}
else
{
if (word[i] == char(0xC3))
{
switch (word[i + 1])
{
case char(0xA1):
word[j] = 'a';
break;
case char(0xA9):
word[j] = 'e';
break;
case char(0xAD):
word[j] = 'i';
break;
case char(0xB3):
word[j] = 'o';
break;
case char(0xBA):
word[j] = 'u';
break;
case char(0xBC):
word[j] = 'u';
break;
case char(0x81):
word[j] = 'a';
break;
case char(0x89):
word[j] = 'e';
break;
case char(0x8D):
word[j] = 'i';
break;
case char(0x93):
word[j] = 'o';
break;
case char(0x9A):
word[j] = 'u';
break;
case char(0x9C):
word[j] = 'u';
break;
}
i++;
}
else
result[j] = result[i];
}
j++;
}
return result;
}
int main()
{
int counter = 0;
string word;
while (cin >> word)
{
counter++;
string result = normalize(word);
cout << counter << ". ";
for (int i = 0; i < result.length(); i++)
{
cout << result[i];
}
cout << endl;
}
return 0;
}
Bitte Fügen Sie den Quellcode Ihrer 'normalize'-Funktion hinzu –
Da Sie den Code, der wahrscheinlich das Problem hat, entfernen, werden wir Schwierigkeiten haben, Ihnen zu helfen. Auch ist off Thema wegen: _ "Fragen, die Debugging-Hilfe suchen (" warum funktioniert dieser Code nicht? ") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, der notwendig ist, um es in der Frage selbst zu reproduzieren." _ –
Wenn 'cout << result' nicht funktioniert, dann sollten Sie arbeiten, um herauszufinden, warum (und es ist wahrscheinlich in dem Code, den Sie uns nicht zeigen). – crashmstr