2013-06-30 1 views
0

C++의 다음 함수에서 TEXT("\\*.txt") 대신 문자열 변수를 사용할 수 있습니까?StringCchCat 함수

StringCchCat (szDir, MAX_PATH, TEXT("\\*.txt")); 

예 : ++ VS C와

string ext = "\\*.pdf"; 
StringCchCat (szDir, MAX_PATH, ext); 

컴파일에서 오류를 반환

error C2664: 'StringCchCatW': can not convert parameter 3 from 'std :: string' to 'STRSAFE_LPCWSTR' 
+1

'ext' 대신'ext.c_str()'을 시도하십시오. – billz

답변

0

예,하지만 넓은 문자열이어야합니다.

0

귀하의 변수 ext 넓은 문자가 아닙니다. 실제로 그것은 @billz가 지적한 것처럼 String 유형입니다. documentation for the StringCchCat function에서 Microsoft는이 함수의 오버로드 된 형식을 3 개 (표준 문자 용, TCHAR 용 및 와이드 문자 용) 제공합니다. 어느 쪽이든 문자열은 자동으로 char 타입으로 변환되지 않기 때문에 c_str() 함수를 사용해야합니다. 당신이이 경우에 당신이 그것을 잘못하고있다, 정의 UNICODE없이 컴파일하지 않는

std::wstring ext = L"\\*.pdf"; 
StringCchCat(szDir, MAX_PATH, ext.c_str()); 

: