gpt4 book ai didi

c++ - C++ 字符串中的 cin>>str+1 是什么?

转载 作者:太空狗 更新时间:2023-10-29 19:57:49 27 4
gpt4 key购买 nike

char str[80];
cin >> str+1;
cout << str+1;

这个 +1 是什么意思?它是如何工作的?任何帮助,将不胜感激。感谢回复。

最佳答案

这是指针运算。 str 是一个包含 80 个 char 的数组。 C++ 支持隐式数组到指针的转换,这意味着在大多数表达式中,str 会自动转换为 char *+ 1 然后应用于该指针,产生与 &str[1] 相同的地址。

cin >> str+1;

这从标准输入读取,将结果存储在从 str[1](1) 开始的缓冲区中。

cout << str+1;

这将从 str[1] 开始写入标准输出,直到 NUL 终止符(2)

实际上,这些操作只是忽略数组 str 的第一个元素。


(1) 请注意,没有边界检查。如果输入超过 78 个字符(第一个字符 80 - 1 - NUL 终止符 1),将发生未定义的行为(很可能是缓冲区溢出)。

(2) 如果数组中没有NUL结束符,会再次出现Undefined Behavior。

关于c++ - C++ 字符串中的 cin>>str+1 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29296869/

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