C++ isalpha()?或者其他人。。。调试断言失败,circlemud游戏
请原谅我使用了翻译 我是编程的初学者 已有数十年历史的circlemud正在被修改。尽管它已经本地化,并且可以在VC6.0中实现,没有任何问题,但在迁移到VS Community 2019时,在输入韩语名称方面存在问题 这个游戏太古老了,韩国的大部分社区都消失了,所以我找不到帮助,就去了那个地方。 我希望我能说一口流利的英语,但是 输入朝鲜语CP949或?将导致ishanalp崩溃。 当我添加/J并编译它时,韩语输入中没有崩溃,但我无法识别韩语名称 移除isalpha部分将允许访问游戏,但在打印或存储名称的区域将发生崩溃 调试断言失败 档案;isctype.cpp 电话号码:36 表达式:c>=-1&&c<255 ishanalpstatic_cast*arg应该修复它,对isnhspace的调用也做了相同的更改 鲜为人知的是。。。字符分类函数不接受char参数,而是接受必须具有无符号char值或为EOF的int参数。如果char是一个有符号类型,通常是这样的,并且您有一个负值,那么。。。功能可能会失败 我还建议将这些宏重新编码为内联函数C++ isalpha()?或者其他人。。。调试断言失败,circlemud游戏,c++,assertion,isalpha,C++,Assertion,Isalpha,请原谅我使用了翻译 我是编程的初学者 已有数十年历史的circlemud正在被修改。尽管它已经本地化,并且可以在VC6.0中实现,没有任何问题,但在迁移到VS Community 2019时,在输入韩语名称方面存在问题 这个游戏太古老了,韩国的大部分社区都消失了,所以我找不到帮助,就去了那个地方。 我希望我能说一口流利的英语,但是 输入朝鲜语CP949或?将导致ishanalp崩溃。 当我添加/J并编译它时,韩语输入中没有崩溃,但我无法识别韩语名称 移除isalpha部分将允许访问游戏,但在打印
#define ishan(ch) (((ch) & 0xE0) > 0x90)
#define ishanasc(ch) (isascii(ch) || ishan(ch))
#define ishanalp(ch) (isalpha(ch) || ishan(ch))
#define isnhdigit(ch) (!ishan(ch) && isdigit(ch))
#define isnhspace(ch) (!ishan(ch) && isspace(ch))
int _parse_name(char *arg, char *name)
{
int i;
/* skip whitespaces */
for (; isnhspace(*arg); arg++);
for (i = 0; (*name = *arg); arg++, i++, name++)
if (!ishanalp(*arg)) // here debug assertion failed line 36
return 1;
if (!i)
return 1;
return 0;
}