2010-12-20 8 views
7

두 변수가 LPCWSTR입니다. 첫 번째 변수와 두 번째 변수의 값을 갖는 새 변수를 만들고 싶습니다.
시도했지만 작동하지 않았다.두 개의 LPCWSTR을 결합하는 방법은 무엇입니까?

LPCWSTR d = L"sd"; 
LPCWSTR f = L"f"; 
LPCWSTR df = d + f; 

내가 이것을 시도하면이 오류가 발생합니다.

1 IntelliSense: expression must have integral or enum type 

LPCWSTR을 두 개 결합 할 수있는 기능이 있습니까?

+0

결과 문자열이'L "sdf"'가 될 것이라고 예상했는데,'strcat'가'char' 문자열을주는 것과 다소 비슷합니까? – cHao

답변

12

C++에서 문자열을 사용한 조작에는 std::string을 사용하는 것이 좋습니다. 귀하의 경우에는 그것을 볼 수 있었다 같은 :

LPCWSTR d = L"sd"; 
LPCWSTR f = L"f"; 
std::wstring df = std::wstring(d) + f; 
LPCWSTR dfc = df.c_str(); // if you are really need this 
1

C++ 컴파일러가 함께 배열에 가입하는 코드를 생성 할 수 있기 때문에이 작동하지 않습니다. 예제의 두 문자열은 wchar_t 유형의 배열입니다. 배열을 결합하려면 더 높은 수준의 함수를 사용해야합니다. 이전에 대답으로

LPWSTR df[20]; // cannot be LPCWSTR, because the C is for const. 
wcsprintf(df, L"%s%s", d, f); 

또는

LPWSTR df[20]; 
wcscpy(df, d); 
wcscat(df, f); 

또는 사용 STL : 몇 그것을하는 방법이 있습니다.

+1

Ack! 'wcscpy'와'wcscat'는 순수한 악마입니다! bounds-checked 변종을 사용하십시오! –

+0

Ummm ... df를 와이드 문자에 대한 20 개의 포인터 배열로 선언했습니다. 나는 당신이 정말로 wchar_t df [20]를 원한다고 생각한다. 그리고 Jonathan Grynspan의 의견은 100 % 정확합니다. wcscpy와 wcscat를 멀리하고 wcscpy_s와 wcscat_s를 대신 사용하십시오. –

관련 문제