【发布时间】:2011-08-17 15:39:43
【问题描述】:
我了解 EOF 和 EOL,但是当我阅读 this question (答案的第二部分)时,我的概念被打破了: 特别是段落:
在找到文件结尾之前它不会停止输入(cin 使用 stdin,它被视为非常像一个文件)
所以我想知道我们什么时候在 windows 下用 c++ 做一些事情:
std::cin>>int_var; ,然后我们按 enter ,这会结束输入,但根据参考链接,它应该只有在点击 ctrl+z 后才会停止输入。
所以我很想知道std::*stream 如何处理 EOF 和 EOL。
第二部分: 请看一下这个例子:
std::cin.getline(char_array_of_size_256 ,256); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); cout << "artist is " << artist << endl;
如果我删除 std::cin.ignore() 它只是停止接受输入(这是已知的情况),但是当我保留它时,它会等待以 '\n' 结束的新输入。但它应该简单地清除流,而不是等待任何以 '\n' 结尾的新输入。
感谢您抽出宝贵时间)
【问题讨论】:
-
你知道EOF通常是指文件到达末尾的情况,但实际上并不是文件数据的一部分(可以是任意字节组合),而EOL是通常指的是表示行尾的实现特定字符(序列)?
-
@PlasmaHH:是的,我知道 EOF 信号是由操作系统向程序发出的。但是你能解释一下问题的第一部分吗?
-
请针对单独的问题提出单独的问题。不要在这里将它们作为单独的“部分”询问
-
@jalf 对此我深表歉意,下次我会记住这一点吗?
标签: c++