繁体   English   中英

如何使用C ++中的函数将向量写入文件?

[英]How to write a vector to a file with a function in C++?

这是我的代码的一些摘要。 首先是我编写的函数。 给我一个错误的函数是fileout函数,该函数应该将向量写入文件。

vector<int> random(int rowsize, int columnsize) // generates a random matrix given number of rows and columns, stores it as a 1-dimensional vector
{
    int elements = rowsize*columnsize;
    vector<int> x(elements);
    int matrix[10][10];

    int n=0;
    for(int i = 0; i < rowsize; i++)
            {
                for(int j = 0; j < columnsize; j++)
                {
                    matrix[i][j]= -10 + rand() % 21;
                    x[n++] = matrix[i][j];
                }
            }

    return x;
}

void print(vector<int> matrix, int columnsize) //prints the matrix given the number of columns
{
    for(int i=0; i < matrix.size(); i++)
    {
        if(i%columnsize != 0)
            cout << setw(10) << matrix[i];
        if(i%columnsize == 0)
            cout << endl << setw(10) << matrix[i];
    }
    cout << endl;
}

vector<int> addmat(vector<int> matrixA, vector <int> matrixB) //adds two matrices together, takes vector input
{
    vector<int> matrix(matrixA.size());
    for(int i=0; i< matrixA.size(); i++)
        matrix[i] = (matrixA[i] + matrixB[i]);

    return matrix;
}

vector<int> filefill(ifstream &fin, string file, int rowsize, int columnsize) //creates a matrix from a file
{
    fin.open(file.c_str());
    vector<int> matrix;
    int number;

    for(int i=0; i < rowsize*columnsize; i++)
    {
        while(fin >> number)
            matrix.push_back(number);
    }

    fin.close();
    return matrix;
}

void fileout(ofstream fout, string file, vector<int> matrix) //writes a matrix onto a file
{
    fout.open(file.c_str());
    for(int i=0; i < matrix.size(); i++)
        fout << matrix[i];
    fout.close();
}

这是该函数的主要用法。 fileout函数内部的fout被标记为错误:

“ 6 IntelliSense:“ std :: basic_ofstream <_Elem,_Traits> :: basic_ofstream(const std :: basic_ofstream <_Elem,_Traits> :: _ Myt&_Right)[with _Elem = char,_Traits = std :: char_traits]” “ C:\\ Program Files(x86)\\ Microsoft Visual Studio 11.0 \\ VC \\ include \\ fstream”的第1034行是无法访问的c:\\ Users \\ William \\ Desktop \\ C ++ \\ Homework8 \\ HW8 \\ hw8.cpp 163 11 HW8

else if (answer == "N" || answer == "n")
    {

        matrixA = random (Arow, Acolumn);
        cout << "Matrix A" << endl;
        print(matrixA, Acolumn);

        matrixB = random (Brow, Bcolumn);
        cout << "Matrix B" << endl;
        print(matrixB, Bcolumn);

        cout << endl << "Matrix A + Matrix B =" << endl;

        vector<int> matrixC = addmat (matrixA, matrixB);
        print(matrixC, Acolumn);

        for (int i = 0; i < matrixA.size(); i++)
        {
            matrixB.push_back(matrixA[i]);
        }

        string filo;
        cin >> filo;
        ofstream fout;
        fileout(fout, filo, matrixB);


    }

不确定是什么问题????????????

与其从调用fileout函数的任何人fileout接受一个ofstream对象, fileout尝试在fileout内部创建一个本地ofstream fout

void fileout(string file, vector<int> matrix) //writes a matrix onto a file
{
    ofstream fout;
    fout.open(file.c_str());
    for(int i=0; i < matrix.size(); i++)
        fout << matrix[i];
    fout.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM