Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

29.07.2012, 22:41

jeden Buchstaben im String als ASCII

Hi läute da ist bestimmt ein bekanntes problem aber irget wie find ich keine richtige Lösung.
Also ich hab in ein Array 256 Elemente gespeichert, 1 Element => 1 ASCII Buchstaben.
So jetzt mein Problem wenn ich ein String durch gehen und Sonderzeichen vorkommen gibts es schon Probleme

C-/C++-Quelltext

1
for(size_t i = 0;i < str.length();i++){    size_t chr = static_cast<size_t>(str[i]);    // mach was mit array[chr]}

So jetzt das Problem das äöüß aus 2 Byte bestehen.
Gibt es ein möglichkeit so ich jeden Buchstaben auslesen kann und nicht nur den einzellen Byte.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.07.2012, 22:49

Das liegt an der Kodierung des Strings, die ist in diesem Fall UTF-8 und nicht ASCII.
Es gibt Libraries für C++, um mit UTF-8-Strings umzugehen, z.B. hier: http://utfcpp.sourceforge.net/

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

3

29.07.2012, 23:05

Gibts keine std-Funktion in C++ oder C++x0 die man zum einfachen umwandeln verwenden kann.
Irgetn wie utf8_to_ascii Function, std::string rein und rauskommt ein array mit ascii-code.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

29.07.2012, 23:14

Wie schon gesagt:
Du gehst hier von der falschen Annahme aus, dass dein String ASCII-kodiert ist.
Ist er aber nicht. Er ist UTF-8-kodiert, und darum ist es gar nicht möglich einen ASCII-Code für jedes Zeichen zu bekommen, weil die meisten Zeichen gar nicht von ASCII abgedeckt werden.

ASCII deckt z.B. keine Umlaute ab.
Hier siehst du, welche Zeichen es dort gibt: http://de.wikipedia.org/wiki/American_St…Zusammensetzung

Du kannst deinen String aber z.B. in ISO-8859-1 oder ISO-8859-15 kodieren, dann gibt's Umlaute in 1-Byte.
Dazu musst du nur einen entsprechenden Text-Editor benutzen wie z.B. Notepad++ oder deine IDE auf diese Kodierung umstellen.

Werbeanzeige