문제

기본적으로 프로그램에서 사용하기 위해 하드 드라이브 디스크에서 다양한 변수를 검색하고 싶습니다. 자세한 내용을 묻기 전에 가능하다는 것을 확인해야합니다. 그게?

그것이 가장 좋은 방법은 무엇입니까? .ini 파일의 사용을 보았지만 .ini 파일에서 특별히 데이터를 검색하는 방법을 모르겠습니다. 변수가 항상 X 라인에 있는지 확인하기 위해 엉망인 텍스트 파일과 동일합니까? 예를 들어:

ifstream variables("variables.ini");

//some code later
//assume line 'x' holds a variable

if(variables.good())
{
   variables.get(x);
}

//or whatever =/

나는 여기서 무엇을 해야할지에 대한 상실에있다.

편집 : 선택 언어는 C ++입니다.

도움이 되었습니까?

해결책

당신이 다루어야 할 첫 번째 질문은 누구와 그 이유입니다. 당신의 옵션 어떻게 그것들로부터 따를 것입니다.

그렇다면 누가 데이터에 액세스 할 것인가? 프로그램 자체 인 경우 바이너리 파일, XML, 데이터베이스, INI 파일 등 원하는 데이터를 저장할 수 있습니다. 그러나 데이터를 사용자가 쉽게 액세스 할 수있어서 실행되기 전에 변경할 수있는 경우 INI와 같은 텍스트 파일이 쉽게 편집 할 수 있습니다. 다른 형식으로 저장된 데이터를 편집하려면 저장된 매개 변수를 조작하기 위해 완전히 별도의 프로그램을 작성해야 할 수도 있습니다. 어쩌면 그것은 당신의 상황에서 의미가 있거나 그렇지 않을 수도 있지만 더 많은 일이 될 것입니다.

INI 경로로 가기로 선택하면 올바른 길을 가고 있습니다. 그들은 단지 텍스트 파일 일뿐입니다. 일반적인 형식은 섹션 (일반적으로 괄호 안)을 갖는 다음 섹션 내에 키/값 쌍이있는 것입니다. 일반적으로 주석 라인은 세미콜론으로 시작합니다. 설정 사이를 오가는 사용자에게는 좋은 터치입니다.

그래서 다음과 같은 것 :

[System]
    datapath = /home/me/data

[Application]
    start_count = 12
;   start_count = 20  //this is a comment

데이터의 특정 라인에 대해 걱정할 필요가 없습니다. 당신은 파일을 한 줄씩 읽습니다. 비어 있거나 댓글 줄이 던져집니다. 당신은 당신이 어떤 섹션에 있는지 기록하고 당신은 키/값 쌍을 처리합니다.

프로그램에 구문 분석 파일을 저장하는 방법에는 여러 가지가 있습니다. 간단한 것은 섹션 이름과 키를지도의 키로 연결하는 것일 수 있습니다. 값 (키/값 쌍의)은 맵의 데이터입니다.

따라서 "SystemDatapath"는 하나의 맵 키 일 수 있으며 그 값은 "/home/me/data"입니다. 프로그램이 값을 사용해야하는 경우 키로 값을 찾습니다.

그것이 기본입니다. 궁극적으로 당신은 그것을 장식하고 싶을 것입니다. 예를 들어, 유형별로 값을 검색하는 메소드. eg getString (), getInteger (), getfloat () 등

다른 팁

응용 프로그램의 .ini 파일 형식을 결정합니다. 나는 일반적으로 XML과 함께 일하고 있기 때문에 귀하는 범위별로 귀하의 정보를 구성 할 수 있으며 이미 XML 트리의 저장 및 검색을 처리 할 수있는 많은 리브가 있습니다.

편집 : C ++의 경우 - http://xerces.apache.org/xerces-c/

파일에서 값을 자주 가져 오려면 특히 해당 값을 업데이트 (지속) 해야하는 경우 데이터베이스가 훌륭한 옵션입니다. 또한 데이터 세트가 성장함에 따라 좋은 성능을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top