将输入流迭代器与数组一起使用

Using input stream iterator with array

本文关键字:一起 数组 输入流 迭代器      更新时间:2023-10-16
#include <iterator>
#include <iostream>
using namespace std;
const int MAX_NAME_LENGTH=100;
int main()
{
    char name[MAX_NAME_LENGTH];
    cout<<"Introduce yourselfn";
    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");

}

当我键入名称并按回车键时,该程序仍然只产生命令提示符。调试后,结果发现"如果"从未达到;似乎无法到达流的末尾(eos(。

  1. 为什么"如果"里面的条件总是假的?
  2. 解决我问题的最简单方法是什么?

到达文件末尾时满足条件,但控制台没有自然 EOF,因此您需要明确告诉它结束在哪里。您可以通过在Windows中按ctrl + z或在Unix中按ctrl + d在控制台中输入EOF字符。下面是一个有效的运行示例:

输入

Chris
^Z

输出

Hi Chris