2013-03-15 3 views
5

부스트는 부스트 _ 파일 시스템을 사용할 때 파일 이름에 따옴표를 계속 추가합니다.boost :: filesystem 인용 부호를 추가 하시겠습니까?

foo.cpp의 : 컴파일 된

#include <iostream> 
#include <boost/filesystem.hpp> 

int main(int argc, char * argv[]) 
{ 
    std::cout << argv[0] << std::endl; 
    boost::filesystem::path p(argv[0]); 
    std::cout << p << std::endl; 
    std::cout << p.filename() << std::endl; 
    return 0; 
} 

:

g++ foo.cpp -o foo -lboost_filesystem -lboost_system 

출력 :

./foo 
"./foo" 
"foo" 

이 내 경우에는 다소 예상치 못한 불편하다. 이것은 정말로 의도적 인 것인가, 아니면 다소 오래된 버전의 Boost (1.46.1) 버그입니다. 추가하지 않도록 할 수있는 방법이 있습니까?

설명서를 살펴 보았지만 이 아닌은 예제 출력에 따옴표가 표시되어 있지만 나는 깨달았습니다.

답변

6

을 1.47.0 버전의 프레임 워크.

제안 된 해결 방법은 다음과 같습니다

std::cout << path("/foo/bar.txt").filename().string() 
4

예기치 않은 포함 된 공백이 있고 관련 코드가 혼동되기 때문에 의도적입니다. 당신이 할 수있는 최선은 아마도 :

boost::replace_all(yourquotedstring, "\"", ""); 

편집 비록

, this link에 따르면,이 같은 시도 할 수 있습니다 :이 실제로 부스트에 제기 한 bug입니다

std::cout << path("/foo/bar.txt").filename().string(); 
+0

글쎄, 나는 잘 따옴표 나 자신을 추가 할 수 있습니다 공백 무서워합니다. 로그 아웃풋에서 파일 이름을 사용할 수 있기 전에 그들을 제거하는 것은 귀찮은 일입니다 - 그리고 replace_all()은 실제로 도움이되지 않습니다. 왜냐하면 두뇌가 망가 졌기 때문에 내장 된 따옴표가있을 수 있기 때문입니다 * 또한 파일 이름에. ;-) – DevSolar

+0

괜찮 았지만 버그 리포트에서 제안한 것을 할 수 있습니다 : std :: cout << p.filename(). string() << std :: endl; –

+0

내가 상향 투표하거나 대답하기 전에 작성, 테스트 및 커밋. ;-) – DevSolar

관련 문제