2014-12-19 3 views
3

Visual Studio 2013 TR2 파일 시스템 라이브러리를 사용하고 있습니다.std :: tr2 :: sys :: path to std :: string으로 변환하는 버그?

#include "StdAfx.h" 
#include <filesystem> 
#include <iostream> 

//------------------------------------------------------------------------------ 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
    namespace fs = std::tr2::sys; 

    fs::path fsPath = "//server/dir"; 

    std::string sPath = fsPath; 

    std::cout << sPath.c_str() << "\n"; 
} 

이 의지 출력 "\ 서버 \ 디렉토리"가 아닌 "\\ 서버 \ 디렉토리를"문자열로 UNC 경로를 변환 할 때 나는 버그를보고하고있다.

수정 사항이 있습니까? 내가 뭔가 잘못하고 있는거야?

+0

실제로 입력했지만 코드 형식이 "\\"에서 "\"로 줄어 들었습니다. 캐치를 가져 주셔서 감사합니다. – Armbie

+0

VS2012에 대해보고 된 관련 버그가 있었지만 해결해야합니다 : https://connect.microsoft.com/VisualStudio/feedback/details/788976/std-tr2-sys-path-fails-with-unc-paths –

+0

제안서에서 문자열로의 암시 적 변환이 표시되지 않습니다. Visual Studio 확장 프로그램처럼 보입니까? –

답변

0

글쎄, 나에게 맞는 해결 방법을 발견했다. 사용하는 경우

sPath = fsPath.string(); 

이제이 문자열을 std :: ifstream 생성자에 전달할 수 있습니다. 경로 문자열은 "\\ server \ dir"이 아닌 "// server/dir"입니다.

+1

'string()'은 경로를 네이티브 형식으로 반환합니다. 즉, Windows에서는 디렉토리 구분자가 정방향 또는 역방향 슬래시가 될 수 있습니다. 구분자는 슬래시 만 사용하는 일반 형식을 원할 것입니다. –

관련 문제