Zdravím, nevíte
proč použití isspace na 'š' způsobí selhání Assertu, jehož účelem je ověřit, zda je c charakter a který vypadá následnovně:
_ASSERTE((unsigned)(c + 1) <= 256);
Výpis proměnných z watche:
c -25; (unsigned)(c+1) 4294967272
0sobně se domnívám, že je to špatným přetypováním intu c (který ovšem představuje char) na unsigned int, čekal bych spíše, že dojde k oříznutí znaménka, než k čisté reinterpretaci bitů.
Můžete mi doporučit, zda a případně jak (static_cast?) bych mohl tuto kontrolu opravit, aby byla stále funkční, ale nevyhazovala chyby, kde nemá? Přijde mi divné, že by se to dělo u standartní knihovny, v MSVS a ve chvíli, kdy nemá.
Problém nastává přirozeně pouze v módu debugingu (definováno makro _DEBUG), ale je to otravné při ladění a celkově podivné.
Tuším, že tuto problematiku možná řeší knihovna locale (locale.h), ale nemám s ní zkušenosti, pokud vy ano, prosím napište.