cin.get() 在接下来的代码中如何工作?(C++)

How does cin.get() works in the next code?(C++)

我得到了这个例子,但是我想不通"what is what",请帮忙

#include iostream

using namespace std;

void main() {
    char a[10],
         car,
         i = 0;
    while (i < 10)
        if(car = cin.get() != '\n')
            a[i++] = car;
    cout << a << endl;

    cin.get();
}

cin.get() returns car中存储的一个字符,如果那个字符是!=换行符,则while循环继续(当然,只要i < 10) . 所以基本上,您的代码等待在控制台中引入字符并将它们存储在您的数组中,然后显示整个数组。

首先,我必须是整数,所以a[i++] = car可以工作。

其次,a[10]没有全局声明,所以它是用内存中的一些随机值初始化的;这就是为什么你的字符串后面有一些奇怪的符号。您可以这样做来避免这种情况:a[i++] = '[=13=]' after reading the string.

当谈论cin.get()时,它读取缓冲区中的每个字符直到它为空,然后等待下一个输入。

这是您的代码:

char a[10], car;
int i=0;
while (i < 10 && (car = cin.get()) != '\n')
    a[i++] = car;
a[i++] = '[=10=]';
cout << a << endl;

cin.get();