( airween | 2019. 10. 02., sze – 16:20 )

Egyáltalán definiálva van, hogy a bemenet az ISO 8859-1 kódolású?

Hát nem igazán :)
https://www.ietf.org/rfc/rfc2616.txt

Az std::string olyan karakterkészletekre jó, amiknél egy karakter egy byte-ra kódolódik.
Itt az első dilemma: az std::string bár byte-ot tárol, de az értéke -127 és 128 között lehet. Viszont az inputról nem jöhet 0-nál kisebb érték, max ha a kódban valahol cast-olódik. Ha viszont ez történik, akkor az összehasonlítandó értéknek is -127 és 128 között kell lennie, tehát (szerintem) jónak kellene lennie a cast-nak.