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

What is cin>>str+1 in C++ string?

本文关键字:gt 是什么 C++ str+1 字符串 cin      更新时间:2023-10-16
char str[80];
cin >> str+1;
cout << str+1;

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

这是指针算术。 str 是一个 80 char s 的数组,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 终止符,则未定义行为将再次发生。

在表达式中str + 1字符数组str被转换为指向其第一个元素的指针。因此str + 1是指向数组第二个元素的指针。

考虑一个简单的程序会更清楚

#include <iostream>
int main()
{
    char s[] = "Hello";
    for ( size_t i = 0; *( s + i ) != ''; ++i )
    {
        std::cout << s + i << std::endl;
    }
}

程序输出将是

Hello
ello
llo
lo
o