2013-10-16 3 views
1

좋아, 모두들 수공예 암호 관리자에 대해 어떻게 느끼는지 잘 알고 있지만 내 도움이 필요합니다. 실제 사용 목적이 아님, 학습을 위해서.암호 관리자 - 계속/장기간

저는 C++에서 장기 변수를 갖는 방법에 대해 궁금합니다. 또는 정말로, 장기적인 것을 가지고 있습니다.

장기적인 의미는 무엇입니까? .exe의 다음 실행시 저장되거나 계속됩니다. 제 경우에는 프로그램을 처음 실행할 때 액세스 암호를 입력하라는 메시지가 표시되므로 다음에 프로그램을 시작할 때 처음 실행했을 때 선택한 암호를 입력해야합니다.

현재 if() 문을 사용하여 암호가 원하는 암호와 같은지 확인하고, 암호가 맞으면 암호를 확인합니다. 그러나 실제로는 그렇게 효과적이지 못하며 실용적이지 않습니다.

내가 생각하기에 어딘가에 액세스 암호가 들어있는 텍스트 파일을 작성하여 읽는 것이었지만 암호 관리자의 목적에 위배되는 내용이었습니다.

+1

* databases *에 대해 읽어보십시오. 그리고 MySQL과 유사 할 필요는 없습니다. 단순한 텍스트 파일도 데이터베이스가 될 수 있습니다. –

+0

제 경우에는 좀 지나친 것 같습니다. 프로그램에 영향을 줄 수있는 간단한 방법이 있어야합니다 ... 실제적으로 존재하는 모든 프로그램에는 설정, 변경할 수있는 것, 암호 등이 있습니다. – Crju

+0

[Wikipedia article] (http://en.wikipedia.org/wiki/) 데이터베이스) : "데이터베이스는 체계적인 데이터 수집입니다." 데이터를 저장하는 위치는 중요하지 않습니다. 데이터를 저장하면 데이터베이스에 저장됩니다. 파일 시스템에 파일을 쓰는 것만으로도 간단한 해결책입니다. 예 : Redis 또는 SQLite는 다른 솔루션입니다. –

답변

1

프로그램의 모든 변수는 메모리에만 있고 종료시 손실됩니다. 디스크에 저장하고 나중에 읽어야합니다.

직접 또는 간접적으로 여러 가지 방법이 있습니다.

매우 간단한 저수준 방법은 ofstreamifstream을 사용하는 것입니다. 예컨대 : 당신은 C-기능 fopen, fread, fwrite, fclose 더 편안 수 있습니다

#include <iostream> 
#include <fstream> 

int main() { 
    using namespace std; 

    int counter = 0; 

    // try to load counter from file 
    { 
    ifstream myfile("mycounter.txt"); 
    if (myfile.is_open()) 
    { 
     myfile >> counter; 
    } 
    myfile.close(); 
    } 

    cout << "current counter: " << counter << endl; 

    // save counter to file 
    { 
    ofstream myfile; 
    myfile.open("mycounter.txt"); 
    myfile << counter << endl; 
    } 
} 

그런 다음, 데이터베이스가 이러한 데이터베이스를 사용하기 쉬운 라이브러리가있다. sqlite을 확인하십시오. C++에서 사용할 수 있습니다.

1

데이터베이스를 시작하거나 데이터를 파일에 저장/쓸 수 있습니다.

관련 문제