Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Verwendung unsigned char

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.03.2005, 18:52 Uhr
~Daywalker
Gast


Hallo zusammen,
habe folgendes Problem. Mein Programm soll Zeichen aus einem Dokument Schritt für Schritt auslesen und in einem String speichern. Eine Suchfunktion soll dann die Möglichkeit bieten, gezielt nach Zeichenketten zu suchen.
Für das Einlesen benutze ich datenquelle.get(zeichen), wobei zeichen als
char zeichen deklariert ist;
Das funktioniert auch alles soweit einwandfrei. Da char aber als signed nur 8 Bit benutzt, kann mein Programm Umlaute nicht korrekt einlesen und gibt an ihrer Stelle Ersatzzeichen aus. Da aber meine Suchfunktion darauf basiert, dass 2 Strings miteinander verglichen werden, scheitert die Suche immer dann, wenn das Suchwort einen Umlaut enthält.
Eine Umstellung der Variable auf unsigned char macht Probleme mit der get() Methode => dann funktioniert gar nichts mehr.
Gebe ich die eingegebenen Daten in eine externe Datei aus, sind wieder alle Umlaute da, nur innerhalb der Konsolenanwendung funktioniert das nicht.
Meine Suchfunktion sieht im Kern so aus:


C++:
if (kategorie)
        {
        for (int i = 0;i < (kategorieinhalte[index].length());i++)                    //Endpunkt geändert
            {
            if (puffer == suchwort)
                {
                gefunden = true;
                puffer.erase();
                break;
                }
            }



Hat irgendwer eine Idee, was ich machen könnte, um auch Umlaute suchen zu können? Hänge schon was länger an diesem Problem und langsam wirds frustrierend!
Herzlichen Dank schon mal!
Patrick


Bearbeitung von Pablo:

Benutze CPP Tags selber!


Dieser Post wurde am 10.03.2005 um 19:08 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.03.2005, 20:30 Uhr
~RoaN
Gast


Benutze Unicode: wchar_t

MfG RoaN;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.03.2005, 21:22 Uhr
~Daywalker
Gast



Zitat von ~RoaN:
Benutze Unicode: wchar_t

MfG RoaN;

Hab ich probiert! Wenn ich zeichen als wchar_t deklariere, dann läuft das mit dem get() nicht mehr! Hat denn wchar_t andere Methoden als char?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.03.2005, 09:30 Uhr
Oliver
S2-Pixelgeneral


Benutze mal wifstream statt ifstream.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.03.2005, 19:06 Uhr
~Daywalker
Gast



Zitat von Oliver:
Benutze mal wifstream statt ifstream.


Hi Oliver, habs probiert mit wifstream, dann emckert er nicht mehr über die get() - Methode, aber gibt mir nur die zugehörigen ansi - codes aus, bei der Zuweisung der eingelesenen Zeichen zu einem String produziert er trotzdem nur quatsch => statt a krieg ich bsw. ³ => wie gesagt, beim Export in eine Datei sind die Zeichen wieder richtig, nur während der Verarbeitung in der Konsolenanwendung benutzt er diese Hieroglyphen, was natürlich meine Suchfunktion zerstört.
Hab mii auch schon die Ascii - Werte der Zeichen ausgeben lassen, die werden während des Einlesens verändert => aus Ascii -127 wird dann -4
Somit können die Suchstrings nicht mehr mit den vorhandenen Zeichen übereinstimmen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.03.2005, 19:08 Uhr
~Daywalker
Gast



Zitat:

statt a krieg ich bsw. ³


Sorry, Tippfehler, mein nich a, sondern natürlich ä!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.03.2005, 13:17 Uhr
~Daywalker
Gast


Es wird von Tag zu Tag mysteriöser. Ich hab mal was rumprobiert und komm zu dem Ergebnis, dass Umlaute richtig eingelesen und gespeichert werden, wenn man sie über die Tastatur einliest bsw. cin o.ä. Liest man allerdings die gleichen Zeichenketten über get() ein, produziert er nur Quatsch, obwohl ich in beiden Fällen die gleiche char - Variable als Puffer verwendet habe. Hat hierfür irgendjemand eine Erklärung? Warum werden Umlaute korrekt von der Tastatur aber falsch aus einenm *.txt - Dokument ausgelesen? Ich hab nicht die geringste Ahnung, woran das liegen könnte!
MfG, Daywalker
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: