Che*_*Lai 0 c++ iterator file c++11
嘿伙计们这对你们所有人来说都是一个有趣的挑战.我有一个文本文件,我应该逐行处理信息.处理部分是微不足道的,只要我能获得单独的线条.然而,这是挑战:
目前,我最好的解决方案是: 是否有可以逐行遍历文件的C++迭代器? 但我希望有一个更好的,不涉及创建我自己的迭代器类或实现std :: string的代理.
PS这是一个学校作业,这里的挑战是使用标准功能和算法的组合解决问题,但我不知道如何去解决它
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::copy
和std::getline