gpt4 book ai didi

c++ - 为什么不推荐使用 isascii()?

转载 作者:可可西里 更新时间:2023-11-01 16:17:54 25 4
gpt4 key购买 nike

根据 isascii() 联机帮助页:

http://linux.die.net/man/3/isascii

POSIX.1-2008 marks isascii() as obsolete, noting that it cannot be used portably in a localized application.

我不确定可移植性问题出在哪里。这个函数的一个非常简单的实现是:

int isascii(int ch) { return ch >= 0 && ch < 128; }

在哪些情况下上述实现不充分或不可移植?

谢谢

最佳答案

我想如果您的字符编码不使用专用于 ASCII 的低七位范围,它就不会工作。可能发生在一些多字节编码中,当给定的字节只是字符的一部分时。

例如,在 Shift-JIS 中,第二个字节可以从 0x40 开始,与 ASCII 重叠。即使在第一个字节中,也有一些细微的变化,例如 0x5C(货币符号而不是反斜杠)或 0x7E(某种斜杠而不是波浪号)。

我找到了这个 article有人解释了在他们自己的操作系统设计中不包含 POSIX 函数的原因:

This function is rather pointless. If we use a character encoding that wasn't ascii compatible, then it doesn't make sense. If we use a sane character encoding such as UTF-8, then you can simply check if the value is at most 127.

关于c++ - 为什么不推荐使用 isascii()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26030928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com