为什么while循环使用cin.get()函数输出两次结果?
why does while loop using cin.get() function outputs result twice?
#include <iostream>
using namespace std;
int main()
{
int a ;
while ( ( a = cin.get() ) != EOF )
{
cout << "hi" <<endl;
} // end while
}
我想知道为什么每次输入一次,它都会输出两次"hi"。
例如输入:1输出:hi你好
您的输入实际上由两个字符组成:字符1
后面跟着一个换行符。
尝试在只包含一个字节或不带换行符的单字母字符串的文件内容中使用管道,您将只看到一个"hi"
。
增加一行代码打印a
的值。这将帮助您理解程序看到的输入值:
int main()
{
int a ;
while ( ( a = cin.get() ) != EOF )
{
cout << a << endl;
cout << "hi" << endl;
} // end while
}
如果您的系统对char
编码使用ASCII值,您可以通过查找ASCII表来了解输出的含义。
相关文章:
- g++的分段错误(在NaN上使用to_string两次时)
- 蛇在C++不会连续转两次
- 检查一个数组是否包含在另一个数组中,以相反的顺序,至少两次
- 从具有按值捕获的 lambda 移动构造 std::函数时,移动构造函数调用两次
- 我应该如何去缓解两次出现的cin?
- Realloc 两次无法在 Visual Studio 上运行
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++析构函数调用两次,堆栈分配的复合对象
- 带有文件结束函数的 while 循环重复输出文件中的最后一个数字两次
- C++使用二维数组的程序,该数组要求用户输入两次.它需要将这些输入显示为输出
- C++:如何一次输出两个字母的字符串
- CC1plus 错误:输出文件名指定两次
- 当我没有调用它两次时,输出如何显示两次
- C++ try/catch:OutputDebugStringW in catch 块输出两次
- 我的文件正在输出到屏幕两次 C++
- 为什么我必须将一个字节强制转换为无符号两次才能看到十六进制输出
- 为什么在这个树程序中,我得到了两次输出
- 为什么while循环使用cin.get()函数输出两次结果?
- 从显示输出中最后一行详细信息的文本文件中读取两次