2016-02-29 5 views
-2

Я пытаюсь написать функцию, которая будет записывать массив (2D) в файл. Это код ниже:C++ Проблемы с функцией write array

#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

'outstream output; output.open (name, ios :: out); 'Почему люди не используют конструктор? 'outstream output (name);'? – erip

+0

Вы должны проверить, что 'output.is_open() == true' – NathanOliver

+1

Попробуйте' '/home/Plinth/Documents/Temp/array.txt' 'вместо' "home/Plinth/Documents/Temp/array.txt" ' , скорее всего, вы пытаетесь создать файл в директории, которая не существует. – Aleph

ответ

7

Вероятно, вы пишете в неожиданном каталоге.

Постарайтесь полностью указать путь, как /home/... (обратите внимание на первый '/') или просто напишите его в локальном файле, например array.txt.

+0

Да, Алеф предупредил меня об этом. Извините за то, что тратишь время всех. – Plinth

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 
} 
Смежные вопросы