gpt4 book ai didi

c++ - c++ 中的减号和加号符号对字符串有什么作用

转载 作者:行者123 更新时间:2023-11-28 01:15:58 57 4
gpt4 key购买 nike

我问的是字符串上减号和加号的工作,特别是在这种情况下:

Solver(string s) {
for (unsigned int i = 0; i < s.length(); i++) {
grid[i] = (int) (s[i] - '0'); // the minus here will remove 0's of string or not ?
}
}

int main() {
Solver ss(
(string) "850002400" + // the plus here will combine all strings together like Java or not ?
(string) "720000009" +
(string) "004000000" +
(string) "000107002" +
(string) "305000900" +
(string) "040000000" +
(string) "000080070" +
(string) "017000000" +
(string) "000036040"
);
}

最佳答案

operator+ for string 将它们连接起来——正如您已经发现的那样。但是没有用于字符串的 operator-!

仔细看,您不是从字符串 (s - '0') 中减去,而是从字符 s[i] 中减去。这不会从字符串中删除字符,而是根据字符的值减去零字符的值计算一个新值(它的值为 48,在 ASCII 和兼容中,至少 - 不是空值!) .由于 C++ 标准保证数字是连续的(就像在 C 中一样),您可以通过这种方式可靠地计算字符的十进制数字。

这也适用于小于 10 的基数,但不适用于更大的基数,因为用于表示的下一个字符不直接跟在十进制数字后面(您可能必须区分大小写字母)。

旁注:您不需要转换为 int:因为类型 char 的大小小于 int,两个操作数都将隐式提升为 int,因此实际上计算是在 int 中完成的,结果仍然是 int...

关于c++ - c++ 中的减号和加号符号对字符串有什么作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723364/

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