gpt4 book ai didi

c++ - 如何强制用户/操作系统输入 Ascii 字符串

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:06 24 4
gpt4 key购买 nike

这是一个扩展问题:Is std::string suppose to have only Ascii characters

我想构建一个简单的控制台应用程序,将用户的输入作为字符集。这些字符包括 0->9数字和 a->z信件。

我假设它是一个 Ascii 来处理输入。例如,我使用的是:static_cast<unsigned int>(my_char - '0')得到的数字为 unsigned int .

如何使这段代码跨平台?如何判断我希望输入始终为 Ascii?或者我错过了很多概念和static_cast<unsigned int>(my_char - '0')只是一个不好的方法吗?

附言在 Ascii 中(至少)数字有顺序。但是,在其他编码中,我不知道他们是否有。 (我很确定它们是,但不能保证,对吧?)

最佳答案

How can force the user/OS to input an Ascii string

您不能,除非您让用户指定此类 ASCII 输入的数值。

这完全取决于用于服务 std::cin 的终端实现如何将 0 等击键转换为特定数字,以及您的工具链期望匹配该数字的内容'0' 的内在翻译。

您根本不应该明确地期望 ASCII 值(例如,使用魔数(Magic Number)),而是 char 文字来提供可移植代码。 my_char - '0' 将产生实际数字值的假设对于所有字符集都是正确的。 C++ 标准在 [lex.charset]/3 中声明

The basic execution character set and the basic execution wide-character set shall each contain all the members of the basic source character set, plus control characters representing alert, backspace, and carriage return, plus a null character (respectively, null wide character), whose representation has all zero bits. For each basic execution character set, the values of the members shall be non-negative and distinct from one another. In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.[...]

强调我的

关于c++ - 如何强制用户/操作系统输入 Ascii 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37953843/

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