2015-01-24 1 views
0

키 반환 목록이 필요하지만 다음 코드는 키 값만 반환합니다.dini : 키는 반환하지만 키 값은 반환하지 않으시겠습니까?

string confpath = buildPath(getcwd, "config.ini"); 
if (!exists(confpath)) throw new Exception("ERROR: config.ini do not exists"); 
auto config = Ini.Parse(confpath); 

foreach (key; config.keys())  
{ 
    writeln(key); 
} 

config.ini 파일 :

images = C:\images 
photos = D:\photos 
pictures = E:\stuff\pictures 

예상 출력 :

images 
photos 
pictures 

코드 출력 :

C:\images 
D:\photos 
E:\stuff\pictures 

내가 sources 보았다하지만 발견되지 않는 곳에 내가 할 수있는 키만 반환합니다.

이니에

답변

1

당신은 IniSection에서 .keys하여 키를 반환 할 수 있습니다. IMO "dini"는 그다지 좋지 않으며 "비 사용자 친화적 인"inifile 래퍼를 제공합니다. 게다가 텍스트 형식을 파싱 할 때 포인터가 필요하지 않아야하므로 IMO ini 래퍼가 반드시 따라야하는 SafeD를 따르지 않습니다.

Ex.

auto keys = ini.getSection("Root").keys; 

또는 값의 .value.

당신은 여기 그것을 얻을 수 있습니다 https://github.com/BaussProjects/baussini/

2

는 키 특성은 _keys 캐릭터 [캐릭터]는 결합 배열을 반환한다.

그래서 foreach 문은 다음과 같아야합니다

foreach (key, value; config.keys())  
{ 
    writeln(key); 
} 

또는, 당신은 단지 열쇠를 얻을 수있는 연관 배열의 키 속성을 호출 할 수 있습니다.

편집 : 이 IMO, 여기에 이름이 약간 혼란 스럽다. 나는 개인적으로 dini의 키 함수를 "asMap"또는 이와 비슷한 것으로 부르며 키 = 값의 매핑을 되 찾는 것을 분명히합니다. 당신이 내 INI 래퍼를 사용하는 경우

+0

당신이 생각 나게 할 수 내 지금 그래서 이것은 테스트되지 않은,하지만 당신은 할 수있는 내 휴대 전화에 foreach 루프 – Suliman

+0

없이 연관 배열의 예를 들어 액세스, 두 번째 요소를 얻을 수있는 방법 config.keys(). keys [1]을 수행하십시오. 이렇게하면 인덱스 1에있는 키에 액세스 할 수 있습니다. –

관련 문제