#include <iterator>
#include <iostream>
using namespace std;
const int MAX_NAME_LENGTH=100;
int main()
{
char name[MAX_NAME_LENGTH];
cout<<"Introduce yourself\n";
istream_iterator<char> eos;
istream_iterator<char> isi(cin);
for(int i=0;i<MAX_NAME_LENGTH; i++)
{
if(isi == eos)
{
name[i]=0; //Breakpoint is set here.
break;
}
name[i] = *isi;
isi++;
}
cout<<"Hi "<<name<<endl;
system("pause");
}
当我输入一个名字并按下回车键时,这个程序仍然只产生一个命令提示符。调试后,发现“if”永远达不到;似乎是无法到达流的结尾(eos)。
- 为什么“if”中的条件总是假的?
- 解决我的问题最简单的方法是什么?
最佳答案
到达文件末尾时满足条件,但是控制台没有自然的EOF,所以你需要明确地告诉它在哪里结束。您可以通过在 Windows 中按 ctrl+z 或在 Unix 中按 ctrl+d 将 EOF 字符输入到控制台。这是一个有效的示例运行:
输入
Chris
^Z
输出
Hi Chris
关于c++ - 将输入流迭代器与数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617753/