gpt4 book ai didi

c++ - 这是 "ASCII arithmetic"的可接受用法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:03 26 4
gpt4 key购买 nike

我有一个 10123X123456 形式的字符串值,其中 10 是年份,123 是一年中的第几天,其余的是独特的系统生成的东西。在某些情况下,我需要将 400 添加到天数,例如上面的数字将变为 10523X123456

我的第一个想法是对这三个字符进行子字符串化,将它们转换为整数,再加上 400,然后将它们转换回字符串,然后对原始字符串调用 replace。行得通。

但后来我想到,我真正需要更改的唯一字符是第三个字符,并且原始值始终为 0-3,因此永远不会出现任何“携带”问题。我进一步想到数字的 ASCII 代码点是连续的,因此将数字 4 添加到字符“0”,例如,将得到“4”,等等。这就是我最终所做的。

我的问题是,有什么理由不能总是奏效吗?我通常避免使用“ASCII 算术”,因为它不适合跨平台或国际化。但是假设数字的代码点总是连续的,即“4”总是比“3”多 1,这似乎是合理的。有人发现这个推理有什么问题吗?

这是代码。

string input = "10123X123456";
input[2] += 4;
//Output should be 10523X123456

最佳答案

来自 C++ 标准,第 2.2.3 节:

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 arithmetic"的可接受用法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503269/

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