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

imr*_*ran 3 c++

char str[80];
cin >> str+1;
cout << str+1;
Run Code Online (Sandbox Code Playgroud)

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

Rei*_*ica 8

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

cin >> str+1;
Run Code Online (Sandbox Code Playgroud)

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

cout << str+1;
Run Code Online (Sandbox Code Playgroud)

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

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


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

(2)如果数组中没有NUL终结符,将再次出现未定义的行为.