Windows 10 和 Linux Muparser 名称允许的字符集不同

Windows 10 and Linux Muparser name allowable character sets are different?

本文关键字:字符集 Linux Muparser Windows      更新时间:2023-10-16

在使用muparser-2.2.6.1的C++代码中,我有定义为类层次结构的解析器名称:

ClassA.classB.classC = value

此名称在 Linux 上解析正确,但被拒绝,因为它包含"."在 Windows 10 上,因为它在 Muparser 中定义的"a_szCharset"之外:

parser.DefineNameChars("0123456789_"
                       "abcdefghijklmnopqrstuvwxyz"
                       "ABCDEFGHIJKLMNOPQRSTUVWXYZ");

为什么相同的允许字符集在 Linux 中有效,而在 Windows 上无效?!如何扩展名称字符集并找到解决方案?

我部分回答了我的问题:

我只是在允许的字符集中添加了".",它就可以工作:

void Parser::InitCharSets(( { DefineNameChars( T(">0123456789.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"( (;

}

但我仍然不知道为什么它可以开箱即用地在 Linux 上运行...?!

非常感谢您的阅读。