Как вывести массив двойников на жесткий диск?

Я хотел бы знать, как вывести массив двойников на жесткий диск.

редактировать:

для дальнейшего уточнения. Я хотел бы вывести его в файл на жестком диске (функции ввода / вывода). Предпочтительно в формате файла, который можно быстро перевести обратно в массив двойников в другой программе. Также было бы хорошо, если бы он был сохранен в стандартной 4-байтовой конфигурации, чтобы я мог посмотреть на нее через шестнадцатеричный просмотрщик и увидеть фактические значения.

Ответы на вопрос(6)

#include <iostream>
#include <fstream>

using namespace std;

int main () {
  double [] theArray=...;
  int arrayLength=...;
  ofstream myfile;
  myfile.open ("example.txt");
  for(int i=0; i<arrayLength; i++) {
    myfile << theArray[i]<<"\n";
  }
  myfile.close();
  return 0;
}

адаптированы изhttp://www.cplusplus.com/doc/tutorial/files/

Просто установите Array и arrayLength на то, что требуется вашему коду.

Вы можете использовать iostream .read () и .write ().

Это работает (очень грубо!) Так:

double d[2048];
fill(d, d+2048, 0);
ofstream outfile ("save.bin", ios::binary);
outfile.write(reinterpret_cast<char*>(&d), sizeof(d));

ifstream infile ("save.bin", ios::binary);
infile.read(reinterpret_cast<char*>(&d), sizeof(d));

Обратите внимание, что этоnot portable между процессорами архитектуры. Некоторые могут иметьdifferent sizes двойной. Некоторые могут хранить байты вdifferent order, Его не следует использовать для файлов данных, которые перемещаются между компьютерами, или данных, которые передаются по сети.

Теперь я чувствую себя старым. Я задал этот вопрос давным-давно (кроме насчет целых). ссылка comp.lang.c ++

Используйте std :: copy () с потоковыми итераторами. Таким образом, если вы измените «данные» в другой тип изменения кода будут тривиальными.

#include <algorithm>
#include <iterator>
#include <fstream>

int main()
{
    double         data[1000] = {/*Init Array */};

    {
        // Write data too a file.
        std::ofstream   outfile("data");
        std::copy(data,
                  data+1000,
                  std::ostream_iterator<double>(outfile," ")
                 );
    }

    {
        // Read data from a file
        std::ifstream    infile("data");
        std::copy(std::istream_iterator<double>(infile),
                  std::istream_iterator<double>(),
                  data // Assuming data is large enough.
                 );
    }
}
Решение Вопроса

Эй ... так что вы хотите сделать это за одну запись / чтение, ну, это не слишком сложно, следующий код должен работать нормально, возможно, потребуется дополнительная проверка ошибок, но пробный вариант был успешным:

#include <string>
#include <fstream>
#include <iostream>

bool saveArray( const double* pdata, size_t length, const std::string& file_path )
{
    std::ofstream os(file_path.c_str(), std::ios::binary | std::ios::out);
    if ( !os.is_open() )
        return false;
    os.write(reinterpret_cast<const char*>(pdata), std::streamsize(length*sizeof(double)));
    os.close();
    return true;
}

bool loadArray( double* pdata, size_t length, const std::string& file_path)
{
    std::ifstream is(file_path.c_str(), std::ios::binary | std::ios::in);
    if ( !is.is_open() )
        return false;
    is.read(reinterpret_cast<char*>(pdata), std::streamsize(length*sizeof(double)));
    is.close();
    return true;
}

int main()
{
    double* pDbl = new double[1000];
    int i;
    for (i=0 ; i<1000 ; i++)
        pDbl[i] = double(rand());

    saveArray(pDbl,1000,"test.txt");

    double* pDblFromFile = new double[1000];
    loadArray(pDblFromFile, 1000, "test.txt");

    for (i=0 ; i<1000 ; i++)
    {
        if ( pDbl[i] != pDblFromFile[i] )
        {
            std::cout << "error, loaded data not the same!\n";
            break;
        }
    }
    if ( i==1000 )
        std::cout << "success!\n";

    delete [] pDbl;
    delete [] pDblFromFile;

    return 0;
}

Просто убедитесь, что вы выделяете соответствующие буферы! Но это целая другая тема.

#include <fstream.h>

void saveArray(double* array, int length);

int main()
{
    double array[] = { 15.25, 15.2516, 84.168, 84356};
    saveArray(array, 4);

    return 0;
}

void saveArray(double* array, int length)
{
    ofstream output("output.txt");

    for(int i=0;i<length;i++)
    {
        output<<array[i]<<endl;
    }
}

вот способ вывести массив значений типа double в текстовый файл по одному на строку. надеюсь это поможет
EDIT
Измените одну верхнюю строку на две, и она будет скомпилирована в VS. Вы можете использовать многопоточность, чтобы не блокировать системное сохранение данных

#include <fstream>

using namespace std;

Ваш ответ на вопрос