gpt4 book ai didi

c++ - 不使用 FOR/WHILE 循环逐行读取文件

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:31 25 4
gpt4 key购买 nike

大家好,这对你们来说是一个有趣的挑战。我得到了一个文本文件,我应该逐行处理信息。只要我可以获得单独的行,处理部分就很简单。然而,挑战在于:

  1. 我必须在我的代码中不使用任何 FOR/WHILE 循环的情况下这样做。 (这包括递归)
  2. 我只能使用标准 C++ 库。

目前我最好的解决方案是: Is there a C++ iterator that can iterate over a file line by line?但我希望有一个更好的,它不涉及创建我自己的迭代器类或实现 std::string 的代理。

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

最佳答案

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..

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

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

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

关于c++ - 不使用 FOR/WHILE 循环逐行读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com