[英]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.