Zum Inhalt springen

Prüfen, ob char im ASCII-Bereich ist


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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 ;)

Geschrieben

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 ... :rolleyes:

@Kitty82: Auch Danke, aber C-Casts benutze ich generell nicht und die Syntax bei mir mit static_cast war dann die Richtige. ;)

Geschrieben
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?

Geschrieben

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?

Geschrieben
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. :D - 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

Geschrieben
Wenn du mal nur das prüfen willst kannst du unter Windows _isascii nehmen.

Komischer ist iswascii im standard enthalten _isascii aber nicht :rolleyes:

THX, aber das Problem, dass ich nicht nur unter Windows laufe und somit plattformunabhängig bleiben muss.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...