gpt4 book ai didi

c++ - 空输入对 cin.get() 意味着什么?

转载 作者:行者123 更新时间:2023-12-02 16:01:16 26 4
gpt4 key购买 nike

我觉得是个简单的问题,但是我不明白这个代码示例中的概念,主要是在while循环中:

#include <iostream>

const int ArSize = 10;
void strcount(const char * str);

int main(){
using namespace std;
char input[ArSize];
char next;


cout << "Enter text:\n";
cin.get(input, ArSize);
while(cin){

cin.get(next);
while(next != '\n')
cin.get(next)

strcount(input);
cout << "Enter next line, empty line ends the program:\n";
cin.get(input, ArSize);
}

cout << "The end\n";
return 0;
}

...

我的理解是 while 循环一直持续到 cin 返回 false。它过滤掉缓冲区中剩余的输入(因为它不是 ArSize 或以下的大小,或者它是 - 然后它只会过滤掉换行符)直到它遇到换行符。然后它计算字符串的字符(在这个问题中不重要),然后,假设有人只是按回车键。 cin.get() 丢弃输入中的换行符。因此,例如,如果某人在终端中输入了一个空文本行,它会将其读取为“失败”输入并且 cin 返回 false?因为如果有人继续换行,只需按回车键,它只会将换行符留在缓冲区中,而 cin.get() 无法获取它,因此它会返回 false。还是我错了?

简而言之 - 如果您直接按回车键,究竟会发生什么? cin.get() 无法获取输入,因为缓冲区中只有换行符并将其视为失败输入,因此返回 false?

最佳答案

如果cin.get(input, ArSize);不读取任何字符(即它遇到的第一个字符是换行符)它调用 setstate(failbit) 将流置于失败状态,因此 while(cin) 变为 false,结束循环。

关于c++ - 空输入对 cin.get() 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70618350/

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