将数组传递给函数

时间:2011-05-01 16:59:54

标签: c++ arrays initialization parameter-passing

我试图在两个函数之间传递一个数组。 _data函数是我的数组。它需要3个参数;数组本身,数组的大小和数组的文件名。所以这个函数应该从输入文件(.txt)中获取每个元素并将它放入数组中,这似乎没问题。

void _data(string dataArray[], int sizeOfArray, ifstream &fin)
{
    const int CharBuffer=20;
    char linedata[CharBuffer];
    ifstream& getline (char* s, streamsize n );

    for(int x = 0; x < sizeOfArray; x++)
    {
        fin.getline(linedata, CharBuffer);
        dataArray[x]=linedata;
        cout << dataArray[x] << endl;
    }
}

ifstream& operator>>(ifstream &fin, ArrayIntStorage &AIS)
{
    string acwData[10000];
    _data(acwData, 10000, fin);
    return fin;
}

但在下一部分我需要将数组中的值输出到文本文件中,我必须在单独的函数中执行。

所以我的问题是,如何在下面的函数中访问上面acwData数组中存储的数据?(或任何其他函数)

ofstream& operator<<(ofstream& fout, ArrayIntStorage& AIS)
{
    return fout;
}

我需要以不同方式初始化我的数组函数以包含返回类型吗?

1 个答案:

答案 0 :(得分:1)

此代码存在一些问题:

 void _data(string dataArray[], int sizeOfArray, ifstream &fin)

在大多数情况下,以下划线开头的名称都是为C ++实现保留的 - 除非你已经非常仔细地阅读了C ++标准,否则不要在自己的代码中使用它们,我怀疑你没有。

 ifstream& getline (char* s, streamsize n );

不要自己声明标准库函数。此函数在<iostream>中声明,因此您应该#include该标题。

使用数组是可疑的。由于您显然使用C ++和标准库,为什么不使用您应该作为参考传递给函数的vector<string>