在c ++中检查非拉丁符号的字符串

时间:2010-12-07 07:38:39

标签: c++

您好
对于给定的路径字符串(char *),我试图检查它是否包含一些非拉丁符号 我正在检查它是否包含至少一个acii代码> = 128的字符。是否足以通过这种方式检查或有更有效的方法?
谢谢

2 个答案:

答案 0 :(得分:3)

要检查是否存在非拉丁字符,只需查看128以上的字符是否足够。但请记住,那些“上限”字符的含义是不可检测的。 为所有不同语言引入的代码页。对于俄语(西里尔语),你有例如CP1251(以及其他)。在该代码页中,字符8Dh(141d)是Ќ。但在代码页1256(阿拉伯语)中,这意味着چ。 它具有相同的值但意义不同!

Unicode'解决'这个问题,因为所有字符都有唯一的值! (因此,大小不是精确的8位,但也可以是16/32位。

由于遗留原因,Unicode和ASCII的前128个字符匹配。

阅读此'The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)'

答案 1 :(得分:0)

这取决于您使用字符串(即您正在使用的API函数),操作系统和可能的文件系统,甚至是文件系统设备的驱动程序。您应该提供更多信息。 32..126范围内的ASCII字符往往被广泛接受和识别(32是一个空格,127通常看起来像一个最好避免):但在你的特定环境中更多可能是合法的。