逐行读取文件而不使用FOR/WHILE循环

Che*_*Lai 0 c++ iterator file c++11

嘿伙计们这对你们所有人来说都是一个有趣的挑战.我有一个文本文件,我应该逐行处理信息.处理部分是微不足道的,只要我能获得单独的线条.然而,这是挑战:

  1. 我必须这样做,不要在我的代码中使用任何FOR/WHILE循环.(这包括递归)
  2. 我只被允许使用标准的C++库.

目前,我最好的解决方案是: 是否有可以逐行遍历文件的C++迭代器? 但我希望有一个更好的,不涉及创建我自己的迭代器类或实现std :: string的代理.

PS这是一个学校作业,这里的挑战是使用标准功能和算法的组合解决问题,但我不知道如何去解决它

sba*_*bbi 6

ifstream input("somefile")

if (!input) { /* Handle error */ }

//MyDataType needs to implement an operator>>

std::vector<MyDataType> res;

std::istream_iterator<MyDataType> first(input);
std::istream_iterator<MyDataType> last;
std::copy(first,last, std::back_inserter(res));

//etc..
Run Code Online (Sandbox Code Playgroud)

您的输入操作符可以是这样的:

std::istream& operator>>(std::istream &in,MyDataType & out)
{
    std::string str;
    std::getline(in,str);
    //Do something with str without using loops
    return in;
}
Run Code Online (Sandbox Code Playgroud)

这里有很多循环(你不"想要使用goto,不是吗?),但它们都隐藏在背后std::copystd::getline