将fstream">>"作为函数参数传递

Ana*_*uck 0 c++ iostream operators

我正在编写一个程序,读取每行包含两个值的文件.这些值应存储在两个向量中,xVals和yVals.因此我使用push_back函数,但我希望我的代码更漂亮.现在它就像:

ifstream file;
file.open("foo.txt");
double TempVal;
while(file >> TempVal){
    xVals.push_back(TempVal);
    file >> TempVal;
    yVals.push_back(TempVal);
}
Run Code Online (Sandbox Code Playgroud)

我目前正在寻找的是像这样的解决方案(只是重要的一行):

while(file >> xVals.push_back(??) >> yVals.push_back(??))
Run Code Online (Sandbox Code Playgroud)

问号代表"我不知道如何获得通过的价值">>"那里......是否有一个简单(比上面的三行更容易)或更好的方式来实现这个?:-)

谢谢

K-b*_*llo 5

你可以这样做:

double tempX, tempY;
while( file >> tempX >> tempY )
{
    xVals.push_back(tempX);
    yVals.push_back(tempY);
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一些漂亮的东西,你会定义一个Point执行流提取/插入的类,然后只使用一个算法:

std::vector<Point> points;
std::copy(
    std::istream_iterator< Point >( file ), std::istream_iterator< Point >()
  , std::back_inserter( points )
);
Run Code Online (Sandbox Code Playgroud)

  • +1第一次重构反映了对称性远远优于OP的代码. (2认同)