부스트 경로 유형을 문자열로 변환하는 방법은 무엇입니까?
안녕하십니까, 현재 파일 위치의 전체 경로를 가져 와서 다음 유형의 변수에 넣는 프로그램이 있습니다 : boost :: filesystem2 :: path
나는 이것을하는 방법을 찾았고 다음을 사용하여 그것을 발견했다.
string result1 = boost::filesystem::basename (myPath)
경로를 문자열로 변환하지만 파일 이름 만 변환합니다 (예 : 경로가 "C : \ name \ bobsAwesomeWordDoc.docx"인 경우 "bobsAwesomeWordDoc"만 반환)).
전체 경로를 문자열로 변환하는 방법에 대해 다음을 찾았지만 프로그램에서 구현하는 방법을 모르겠습니다. 여러 가지 방법을 시도했지만 변환 오류가 발생합니다.
const std :: string & string () :이 루틴은 경로 문법 규칙에 따라 형식이 지정된 경로가 초기화 된 문자열의 복사본을 반환합니다.
나는 시도했다 :
string result1 = string& (myPath);
그리고 다른 몇 가지 변형.
전화하면 myPath.string()
됩니다.
경로를 문자열로 변환하는 것보다 조금 더해야한다고 생각합니다. 먼저 경로의 정식 버전을 가져와야합니다. 심볼릭 링크 요소가없는 절대 경로를 문자열 로 변환 해야 합니다.
boost::filesystem::canonical(myPath).string();
추신-저는 오랫동안 Boost를 사용하여 프로그래밍했으며 문서 에서이 정보를 쉽게 찾을 수 없었습니다.
업데이트 (2017 년 10 월)
문서 : 부스트 : : 파일 시스템 :: 정식 .
그러나 C의 같은 ++ 17 있음을 유의 표준 : 파일 시스템 과 표준 그리고 더 많은.
이것은 wxWidgets에서 작동했습니다. (wx 유틸리티를 사용해야하지만 테스트입니다)
void WxWidgetsBoostTestFrame::OnTestBtnClick(wxCommandEvent& event)
{
boost::filesystem::path currentPath;
currentPath = boost::filesystem::current_path();
std::string curDirString;
curDirString = boost::filesystem::canonical(currentPath).string();
wxString mystring(curDirString.c_str(), wxConvUTF8);
wxMessageBox(mystring); // output: C:/Users\client\Desktop...
}
전화 myPath.generic_string()
하면 필요한 것을 할 수 있습니다.
이 작업을 수행
path.c_str();
당신은 괜찮을 것입니다.
참고 URL : https://stackoverflow.com/questions/4179322/how-to-convert-boost-path-type-to-string
'development' 카테고리의 다른 글
.htaccess (PHP)를 사용하여 즉시 하위 도메인 만들기 (0) | 2020.07.12 |
---|---|
C #에서 filename이 * 가능한지 * 유효한지 확인하십시오 (존재하지 않음) (0) | 2020.07.12 |
하위 프로세스를 사용하여 실시간 출력 얻기 (0) | 2020.07.12 |
NumPy 배열의 모든 셀에서 함수를 효율적으로 평가 (0) | 2020.07.12 |
Java에서 어떤 동시 큐 구현을 사용해야합니까? (0) | 2020.07.12 |