문제

Paths Cross 플랫폼을 처리하는 C ++ GNU 독립형 클래스가 있습니까? 내 응용 프로그램은 Windows 및 Linux를 구축합니다. 구성 파일은 별도의 디렉토리의 다른 파일을 나타냅니다. 다른 구성 파일의 경로를 Linux 또는 Windows에서 작동하는 클래스로 읽을 수 있습니다.

어느 클래스는 어느 클래스를 가장 작은 발자국을 제공하여 어느 시스템에서도 사용할 경로를 번역 할 수 있습니까? 감사

도움이 되었습니까?

해결책

절대 경로를 사용하지 않는 한 전혀 번역 할 필요가 없습니다. Windows는 전방 슬래시를 백 슬래시로 자동 변환하므로 앞쪽 슬래시 경로 분리기가있는 상대 경로를 사용하면 황금빛이됩니다. 가능한 경우 절대 경로를 실제로 피해야합니다.

다른 팁

파일 시스템 라이브러리 부스트에서 도움이 될 것입니다.

정답은 여러 가지 방법이 있습니다. 정답은 프로그램을 재 설계하여 경로 조작을 피하는 것입니다. 여기에 답을 게시했습니다. https://stackoverflow.com/a/40980510/2345997 관련이 있습니다.

방법 :

  1. 사용자가 구성 파일에서 읽는 대신 문제의 경로를 지정할 수있는 명령 줄 옵션을 추가하십시오.
  2. 사용자가 기본 경로를 지정할 수 있도록 명령 줄 옵션을 추가하십시오. 구성 파일의 경로는이 기본 경로 아래에있는 것으로 해석됩니다.
  3. 구성 파일을 3으로 나눕니다. 하나의 파일에는 크로스 플랫폼 구성이 있고 다른 파일에는 Windows 만 구성이 있고 최종 파일에는 Linux 만 구성이 있습니다. 그런 다음 사용자는 Windows와 Linux의 올바른 경로를 지정할 수 있습니다. Windows에서 프로그램은 크로스 플랫폼 구성 파일과 Windows 전용 구성 파일을 읽습니다. Linux에서는 크로스 플랫폼 파일과 Linux 전용 구성 파일을 읽습니다.
  4. 구성 파일 구문 분석에 전처리를 추가하십시오. 이렇게하면 사용자가 프로그램이 실행중인 OS에 따라 파일의 일부 줄을 무시할 수있는 하나의 구성 파일을 가질 수 있습니다. 따라서 사용자는 파일 경로를 두 번 지정할 수 있습니다. Linux의 경우, Windows의 경우에 한 번.
  5. 파일이 항상 실행 파일과 동일한 디렉토리에 있도록 설계를 변경하십시오. 그러면 사용자는 파일 경로가 아닌 구성 파일에 파일 이름 만 지정합니다.
  6. "/"로 ""로 전환하는 간단한 기능을 사용하십시오. 그런 다음 사용자에게 경로를 Linux 경로로 지정해야한다는 것을 사용자에게 문서화하면이 변환이 Windows에 적용됩니다.
  7. 이를 위해 자신만의 경로 미니 언어를 만들어 사용자에게 문서화하십시오. 예 : "/" - 디렉토리 분리기를 지정합니다. {root} - 파일 시스템의 루트로 확장됩니다. {cwd} - 현재 디렉토리로 확장됩니다. 사용자는 다음과 같은 파일 경로를 지정할 수 있습니다.
  8. 일부 경로는 두 플랫폼 모두에서 작동합니다. EG : ../my files/bill.txt와 같은 상대 경로. 이 경로 만으로만 작동하도록 응용 프로그램을 제한하십시오. 이 제한 사항과 응용 프로그램이 사용자에게 경로를 처리하는 방법을 문서화하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top