2009-07-07 5 views
0

가능한 중복 :
How to output array of doubles to hard drive?하드 드라이브의 파일에 두 배의 배열을 출력하기

은 안녕하십니까, 두 번 같은 질문에 대한

미안 해요, 난 새로운 해요 이 사이트를 올바르게 사용하는 법을 배우십시오.

플로트/더블 배열을 하드 드라이브에 파일 (.txt .dat .bin, 문제가되지 않음) 형식으로 저장하려고합니다.

원래 배열이 RAM에 앉아있는 것처럼 보이는 파일의 미러 이미지를 원합니다. 또한 데이터를 빠르고 효율적으로 프로그램으로 다시 읽는 방법을 알고 싶습니다. (기본적으로 하드 드라이브의 데이터를 RAM으로 직접 복사하고 프로그램에 "this"가 두 배의 배열임을 알립니다).

마지막으로, 나는 엄청난 양의 데이터를 출력하고 있기 때문에 (이 경우에 따라 수백 MB까지) 나는이 작업을 빠르고 효율적으로 수행 할 수 있어야합니다. 사전에

감사합니다,

-Faken

+0

첫 번째 글의 편집 버튼을 사용하기 만하면됩니다. –

+0

나는 시도했다. 그러나 나는 벌써 질문을 망쳤다. 그래서 나는 내가 원했던 것이 아닌 대답으로 끝났다. 나는 또한 실을 모니터하지 않았다 ... 나는이 웹 사이트가 움직이는 속도에 익숙하지 않았다 !! – Faken

+0

첫 번째 질문을 수정하십시오. 일부 오래된 응답이 유효하지 않을지라도, 중복을 만드는 것보다 더 나은 옵션입니다. –

답변

0

당신은 당신의 프로그램에서 SQL을 사용하여에 쉽게 액세스 할 수 SQLite는, 사용할 수 있습니다. Here you'll find the amalgamation.

또한 SQLite에서 beautiful C++ wrapper을 확인할 수 있습니다. 이러한 방식으로 데이터를 HDD에 즉시 저장하고 효율적인 쿼리를 사용하여 데이터를 가져올 수 있습니다.

2

다음은 몇 가지 기본 코드로 시작합니다. 물론 오류 검사 등을 추가 할 수도 있습니다. 또한 버퍼링 된 버퍼링 또는 버퍼링되지 않은 IO를 결정해야합니다. 또 다른 (이식 가능하지는 않지만 더 빠른) 접근 방식은 STL을 우회하여 운영 체제로 직접 이동하는 것입니다. 마지막으로, 나는 부스트를 모르지만, 당신이 원하는 것에 대해 생각할 수있는 것이 있다는 인상을 받고 있습니다. 그래서 당신도 거기를보고 싶어 할 것입니다.

#include <fstream> 
#include <string> 

using std::ofstream; 
using std::ifstream; 
using std::string; 

void WriteDoubleArray(const double arr[], size_t size, const string fileName) 
{ 
    ofstream outFile(fileName.c_str(), std::ios::binary); 
    outFile.write((const char *)arr, size * sizeof(arr[0])); 
} 


void ReadDoubleArray(double arr[], size_t size, const string fileName) 
{ 
    ifstream inFile(fileName.c_str(), std::ios::binary); 
    inFile.read((char *)arr, size * sizeof(arr[0])); 
} 
관련 문제