isalpha()?或其他...调试断言失败,circlemud游戏

时间:2019-06-28 08:23:52

标签: c++ assertion isalpha

请原谅我使用翻译器。

我是编程的初学者。

几十年前的circlemud正在被修改。尽管它已经本地化并且可以在VC6.0中实现,没有任何问题,但是在移至VS Community 2019时,朝鲜语名称的输入存在问题。

游戏太老了,韩国大部分社区都消失了,所以我找不到帮助,因此去了这个地方。 我希望我的英语说得很好,但是...

输入朝鲜语(CP949或?)将导致ishanalp()崩溃。 添加/ J并对其进行编译时,韩文输入中没有崩溃,但我无法识别韩文名称。

删除isalpha()部分将允许访问游戏,但在打印或存储名称的区域将发生崩溃。

调试断言失败!

文件; isctype.cpp 行:36

表达式:c> = -1 && c <255

header {
    height: 200px;
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
}

1 个答案:

答案 0 :(得分:1)

ishanalp(static_cast<unsigned char>(*arg))应该修复它,与对isnhspace的调用相同。

鲜为人知的是,is...字符分类函数不采用char参数,而是采用必须具有 unsigned char 值的int参数或成为EOF。如果char是有符号类型(通常是带符号的类型)并且您的值为负数,那么is...函数可能会失败。

我还建议将这些宏重新编码为内联函数。