Я нашел какой-то запутанный код во время проверки кода и немного озадачен. Делая некоторые исследования, я обнаружил эту ситуацию. Я написал этот пример кода, чтобы выделить проблему
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct(d)) // will assert.
{
}
Итак, программист, который исправлял ошибки, сделал следующее:
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct((unsigned char)d)) // will not assert, because it will be 169.
{
}
Мой вопрос: можно ли сделать char
без знака? В идеале, я бы не использовал char
, но использовал бы кодировку Unicode, чтобы избежать подобных проблем, но программное обеспечение очень старое и в ближайшее время не будет обновлено.
Я использую Visual Studio 2008. ispunct()
можно найти в ctype.h
.