c++ - 将 fstreams 数组传递给函数?

标签 c++ fstream

我基本上是这样写的:-

void function(fstream& f[], int m){
// using fstream objects
}

int main()
{
    int m = 4;
    fstream f[m];
    f[0].open("f0.txt");
    f[1].open("f1.txt");
    f[2].open("f2.txt");
    f[3].open("f3.txt");

    function(f, m);

    return 0;
}

以下是即将出现的错误:-

error: declaration of ‘f’ as array of references|
error: expected ‘)’ before ‘,’ token|
error: expected unqualified-id before ‘int’|

所有这些错误都在线

void function(fstream& f[], int m){

如果我只是在函数内初始化 fstream 数组,错误就会消失。如果我在 main 函数中初始化它们,我应该怎么做才能消除错误?

最佳答案

主要问题是您试图将指针传递给引用,而不是数组。要解决这个问题,你应该传递一个真正的指针 fstream *或者(更好)使用::std::array 代替:

using t_FileStreams = ::std::array<::std::fstream, 4>;

void sort(t_FileStreams & streams){
// using fstream objects
}

int main()
{
    t_FileStreams f;
    f[0].open("f0.txt");
    f[1].open("f1.txt");
    f[2].open("f2.txt");
    f[3].open("f3.txt");

    sort(f);

    return 0;
}

或者,您可能想使用 std::vector<::std::fstream>如果事先不知道元素的数量。另请注意代码 int m = 4; fstream f[m];在 C++ 中是不合法的,因为数组大小必须是编译时已知的常量。

关于c++ - 将 fstreams 数组传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47172134/

相关文章:

c++调用类的构造函数

c++ - 在 DLL 中使用 fstream 读取文件的问题

c++ - 虽然不是新线

c++ - 为什么要为 ifstream 指定 std::ios::in?

c++ - OnTimer 永远不会被调用,不确定为什么?

c++ - 为什么我的代码两次打印相同的命令行参数?

c++ - codelite unittest++/UnitTest++.h : no such file or directory

c++ - 为什么fstream打印出文件的最后一条记录

c++ - 使用 fstream 的“访问冲突”

c++ - 独立的事物相互影响(我不知道发生了什么)