2017-11-30 17 views
0

여기 여기 내 시도시퀀스가 ​​반복되도록 mt19937을 저장/검색하는 방법은 무엇입니까?

using namespace std; 

int main() 
{ 
    mt19937 mt(time(0)); 

    cout << mt() << endl; 
    cout << "----" << endl; 

    std::ofstream ofs; 
    ofs.open("/path/save", ios_base::app | ifstream::binary); 
    ofs << mt; 
    ofs.close(); 

    cout << mt() << endl; 
    cout << "----" << endl; 

    std::ifstream ifs; 
    ifs.open("/path/save", ios::in | ifstream::binary); 
    ifs >> mt; 
    ifs.close(); 

    cout << mt() << endl; 

    return 0; 
} 

이다 나는 마지막 두 숫자가 동일 할 것으로 예상 가능한 출력

1442642936 
---- 
1503923883 
---- 
3268552048 

입니다. 필자는 mt19937을 쓰거나 읽지 못했습니다. 이 코드를 수정할 수 있습니까?

+0

파일을 읽고 쓰는 데 성공 했습니까? 성공을 확인하지 않았습니다. 당신이 결코'ofs'를 닫지 않았기 때문에'ifs'를 열지 못했을 수 있습니다. –

+0

아야 .... 코드를 편집했습니다. 문제는 남아있었습니다. 감사합니다 –

답변

1

쓰기 위해 파일을 열면 기존 파일에 추가됩니다. 당신이 그것을 다시 읽을 때, 당신은 처음부터 읽습니다.

그래서 당신은 당신이 읽고 그것을 다시 열 때, 기존 파일을 자릅니다 대신 apptrunc 플래그를 사용

ofs.open("/path/save", ios_base::trunc | ifstream::binary); 

에 공모를, 기존 컨텐츠를 계속 변경하지 않으 가정 방금 작성한 데이터에는 이미 있던 기존 데이터가 아닙니다.

+0

문제는 실제로 mt19937 개체 처리와 관련이 없습니다. 고마워. –