Veröffentlicht 18. Oktober 200420 j Hallo, ich habe einen std::string und mit Hilfe einer for-Schelife gehe ich durch jedes einzelne Zeiche. for(std::string::size_type idx=0; idx<str.size(); ++idx) {} Nun möchte ich prüfen, ob das Zeichen (str[idx]) im Bereich von ASCII liegt oder in einem bestimmten Bereich innerhalb von ASCII liegt (z.B. 65 bis 122) In Moment habe ich ein Blackout, wie ich dies mache ... könnt ihr mir helfen? Ich weiß nicht, ob ich den char einfach in einen int casten kann und prüfen, ob er im Bereich ist. Also so: bool isInASCII(char ch) { if(static_cast<int>(ch) > 65 && static_cast<int>(ch) < 122) return true else return false; } THX for Help GrEnE
18. Oktober 200420 j Hi, eigentlich müsste es so funktionieren. Ich kenn nur nicht diese Schreibweise mit static_cast usw. Es reicht auch wenn du es so schreibst: if( (int)ch > 65 && (int)ch < 122) return true else return false; so müsst es auf jeden Fall funktionieren... deine Version müsstest du halt mal ausprobieren. Gruß Kitty
18. Oktober 200420 j ach, müsste man nur casten, wenn man den ASCII-code ausgeben will? um ehrlich zu sein, hab's bis jetzt immer gecastet... bin halt auf Nummer sicher gegangen
18. Oktober 200420 j Autor THX Guybrush Threepwood - aber ein 'cast' wäre nicht schlimm, oder? - Kann ja sein, dass es auf irgendeinder Platform (Mac, Unix, Win) nicht geht, dass direkte vergleichen. Also war ja mein Ansatz doch nicht verkehrt ... @Kitty82: Auch Danke, aber C-Casts benutze ich generell nicht und die Syntax bei mir mit static_cast war dann die Richtige.
18. Oktober 200420 j Autor Also soweit ich weiß hat das nichts mit der Plattform zu tun. Nee ist klar - meinte auch vielmehr Compiler (auf unterschiedlichen Platformen). Beispiel: VC71 und CW9 (CodeWarrior9) verhalten sich schon sehr unterschiedlich. Mit einen cast wäre ich wahrscheinlich auf der sicheren Seite, oder?
18. Oktober 200420 j Der cast nach int bewirkt hier nichts, daher kannst du ihn auch weglassen. bool isInASCII(char ch) { return ch > 65 && ch < 122; }[/CODE] Aber bist du sicher, dass du nicht >= 65 meinst?
18. Oktober 200420 j Autor Der cast nach int bewirkt hier nichts, daher kannst du ihn auch weglassen. bool isInASCII(char ch) { return ch > 65 && ch < 122; } Okay. Aber bist du sicher, dass du nicht >= 65 meinst? Hmm, jetzt wo du es sagst. - Dann aber auch <= 122! bool isInASCII(const char ch) { return ch >= 65 && ch <= 122; } So, dass dürfte die Endfassung sein ... Bedanke mich noch mal bei allen, die hier geantwortet haben!! THX
18. Oktober 200420 j Nun möchte ich prüfen, ob das Zeichen im Bereich von ASCII liegt... Wenn du mal nur das prüfen willst kannst du unter Windows _isascii nehmen. Komischer ist iswascii im standard enthalten _isascii aber nicht
19. Oktober 200420 j Autor Wenn du mal nur das prüfen willst kannst du unter Windows _isascii nehmen. Komischer ist iswascii im standard enthalten _isascii aber nicht THX, aber das Problem, dass ich nicht nur unter Windows laufe und somit plattformunabhängig bleiben muss.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.