gpt4 book ai didi

C++使用std从文件中读取

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:44 25 4
gpt4 key购买 nike

我正在尝试从文件中读取,我知道该怎么做:

#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
using namespace std;

int main()
{
std::string filename = "data.txt";
std::ifstream from(filename);
std::vector<int> values((std::istream_iterator<int>(from)), std::istream_iterator<int>());
return 0;
}

我的问题是如何以功能方式做同样的事情:

int fromfile(std::string filename, std::vector<int> &values)
{
...
return 0;
}

原生方式不起作用:

int fromfile(std::string filename, std::vector<int> &values)
{
std::ifstream from(filename);
values((std::istream_iterator<int>(from)), std::istream_iterator<int>());
return 0;

}

最佳答案

你的函数式方法不起作用,因为你试图在一个已经构造的对象上使用构造函数 - 所以看起来你正试图在你的 上调用 operator() vector ,它不存在。但是,vector 确实有一个 assign做同样事情的成员函数,不需要额外的括号:

int fromfile(std::string filename, std::vector<int> &values)
{
std::ifstream from(filename);
values.assign(std::istream_iterator<int>(from), std::istream_iterator<int>());
return 0;
}

尽管真正的函数式方法可能看起来像这样 (C++11) - 使用函数返回vector:

std::vector<int> fromfile(std::string filename)
{
std::ifstream from(filename)
return {std::istream_iterator<int>(from), std::istream_iterator<int>{}};
}

如果你只有 return 0,那么返回 int 就有点没用了......

关于C++使用std从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358220/

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