Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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

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

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

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

  • Autor
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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.