C ++写数组函数的问题

时间:2016-02-29 19:04:29

标签: c++ arrays file-writing

我正在尝试编写一个将数组(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);
}

它运行得很好,没有错误或警告,但没有创建文件。我是不是写了不正确的东西?我是以错误的方式解决这个问题吗?

2 个答案:

答案 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
}