Zum Inhalt springen

Prüfen, ob char im ASCII-Bereich ist


GrEnE

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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