gpt4 book ai didi

c++ - 我使用 ifstream 的模板函数有什么问题?

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

我正在实现一个模板函数来将文件和类似文件的实体逐行读取到 vector 中:

#include <iostream>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <fstream>
using namespace std;
template<typename T> vector<T> readfile(T ref1)
{
std::vector<T> vec;
std::istream_iterator<T> is_i;
std::ifstream file(ref1);
std::copy(is_i(file), is_i(), std::back_inserter(vec));
return vec;
}

我希望在 main 中使用以下代码读取文件:

int main()
{
std::string t{"example.txt"};
std::vector<std::string> a = readfile(t);
return 0;
}

我得到错误: “不匹配调用 '(std::istream_iterator, char, ...

如果我需要提供更多错误消息,请告诉我。很可能我只是搞砸了一些简单的事情。但我不明白为什么 - 使用教程我得到了这个,我认为这是一个很好的解决方案。

最佳答案

你显然是想转 is_i变成一个类型,而是声明一个 std_istream_iterator<T> 类型的变量.你可能打算写:

typedef std::istream_iterator<T> is_i;

您可能还应该将模板参数与用于文件名的类型分离,因为模板在其他方面相当严格:

template <typename T>
std::vector<T> readfile(std::string const& name) {
...
}

std::vector<int> values = readfile<int>("int-values");

关于c++ - 我使用 ifstream 的模板函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037906/

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