#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");
}
当我输入名称并按Enter键时,此程序仍然只生成一个命令提示符。经过调试,结果证明从未达到“if”;似乎流(eos)的末尾无法访问。
答案 0 :(得分:2)
当到达文件末尾时满足条件,但控制台没有自然的EOF,因此您需要明确告诉它结束的位置。您可以通过在Windows中按ctrl + z或在Unix中按ctrl + d将EOF字符输入控制台。这是一个有效的示例运行:
<强>输入强>
Chris
^Z
<强>输出强>
Hi Chris