cin.get()如何在下一个代码中工作?(C ++)

时间:2015-08-08 15:18:37

标签: c++ cycle

我有这个例子,但我无法弄清楚“什么是什么”,请帮助

#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();
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

其次,a[10]未被声明为全局,因此它使用内存中的一些随机值进行初始化;这就是你的字符串后面有一些奇怪的符号的原因。您可以通过这样做来避免这种情况:a[i++] = '\0'读取字符串后。

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

这是你的代码:

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

cin.get();