我正在尝试编写一个将数组(2D)写入文件的函数。这是下面的代码:
#ifndef WRITE_FUNCTIONS_H_
#define WRITE_FUNCTIONS_H_
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void write_array(string name, int rows, int columns, double **array){
ofstream output;
output.open(name, ios::out);
for(int r = 0; r < rows; r++){
for(int c = 0; c < columns; c++){
output<<array[r][c]<<",";
}
output<<endl;
}
output.close();
}
#endif
当我尝试在此程序中运行它时:
#include <string>
#include <iostream>
#include "write_functions.h"
using namespace std;
int main(){
double **array = new double*[10];
for(int i = 0; i < 10; i++){
array[i] = new double[10];
}
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
array[i][j] = i + j;
}
}
string array_name="home/Plinth/Documents/Temp/array.txt";
write_array(array_name, 10, 10, array);
return(0);
}
它运行得很好,没有错误或警告,但没有创建文件。我是不是写了不正确的东西?我是以错误的方式解决这个问题吗?
答案 0 :(得分:7)
您可能正在写一个意外的目录。
尝试完全指定/home/...
之类的路径(请注意第一个'/')或将其写入array.txt
等本地文件。
答案 1 :(得分:1)
在处理文件流时,我更喜欢使用这个习惯用法来及早发现错误。
#include <iostream>
#include <fstream>
#include <cstring>
int main() {
std::ifstream input("no_such_file.txt");
if (!input) {
std::cerr << "Unable to open file 'no_such_file.txt': " << std::strerror(errno) << std::endl;
return 1;
}
// The file opened successfully, so carry on
}