C를 사용하여 특정 옵션이나 섹션이 있는 INI 파일의 줄 번호를 어떻게 얻을 수 있습니까?
주어진 옵션이 발견된 INI 파일의 줄 번호를 가져오는 크로스 플랫폼 방법
문제:
주어진 옵션이나 섹션이 발견된 INI 파일의 줄 번호를 반환할 수 있는 C 라이브러리(예: Boost::program_options)를 찾고 있습니다.
사용 사례:
- 라이브러리에 "[SSS]" 섹션에서 "vvv" 값을 찾아달라고 요청하세요. 라이브러리는 "[SSS]" 섹션에서 "vvv"가 있는 줄 번호 또는 -1을 반환해야 합니다. 이를 통해 예를 들어 "라인 55: vvv는 < 256이어야 합니다."라고 말할 수 있습니다.
- 섹션에 대해 INI 파일을 반복하고 해당 이름을 확인합니다. 알 수 없는 섹션이 발견되면 "라인 55: 섹션 [Hahaha]가 알 수 없음"이라고 보고할 수 있습니다.
응답:
Boost의 가능성 활용 Spirit, line_pos_iterator를 사용하여 솔루션을 만들었습니다.
구현 세부 정보:
POSITIONSINFO = 0:
- 입력이 스트리밍 중입니다.
- 출력이 원시 문자열 형식이거나 map
> 섹션용. -
POSITIONSINFO = 1:
- 입력이 버퍼링되었습니다.
- 출력이 textnode_t 형식:
<code class="cpp">struct textnode_t { int sline, eline, scol, ecol; string_t text; };</code>
로그인 후 복사- 이렇게 하면 결과 맵
> 개별 텍스트 요소의 정확한 행과 열 시작 및 끝 지점을 보고합니다. - 주석(#, / ... / 스타일)이 구현됩니다.
- 공백은 다음과 같습니다. 허용됩니다.
- 슬래시 디이스케이프는 연습으로 남겨 둡니다.
- 활성화되면 오류는 전체 위치 정보와 함께 보고됩니다.
- [완전한 코드, makefile 및 example.ini가 포함된 요점]( https://gist.github.com/1425972)
- [Boost Spirit 문서](https://www.boost.org/doc/libs/1_65_1/libs/spirit/doc/)
코드 조각:
<code class="cpp">#include <map> #include <string> #include <iterator> #include <boost/tuple/tuple_comparison.hpp> template <typename S = std::string, typename Cmp = std::less<S>> class IniFile { public: IniFile(Cmp cmp = Cmp()) : _cmp(cmp) {} IniFile(const std::string& filename, Cmp cmp = Cmp()) : _cmp(cmp) { open(filename); } void open(const std::string& filename); typedef S string_t; #if POSITIONINFO struct textnode_t { int sline, eline, scol, ecol; string_t text; // ... }; #else typedef string_t textnode_t; #endif typedef std::pair<textnode_t, textnode_t> keyvalue_t; typedef std::map<textnode_t, textnode_t> section_t; typedef std::map<textnode_t, section_t> sections_t; private: Cmp _cmp; };</code>
로그인 후 복사추가 리소스:
중요 사항: 제공된 솔루션은 C 11 지원이 필요하지 않지만 구문 분석 결과를 덤프하는 데 사용되었습니다.
위 내용은 C를 사용하여 특정 옵션이나 섹션이 있는 INI 파일의 줄 번호를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
Repo : 팀원을 부활시키는 방법
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 파일 저장 위치 : 어디에 있고 그것을 보호하는 방법은 무엇입니까?
3 몇 주 전
By DDD

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7315
9


자바 튜토리얼
1625
14


Cakephp 튜토리얼
1348
46


라라벨 튜토리얼
1260
25


PHP 튜토리얼
1207
29



C 언어 함수에 의해 반환 된 값 유형은 무엇입니까? 반환 값을 결정하는 것은 무엇입니까?

STL (정렬, 찾기, 변환 등)의 알고리즘을 효율적으로 사용하려면 어떻게합니까?
