유니코드 .. 멀티바이트 이놈들 -ㅅ-..

꼭 필요하긴하지만 ..막상쓰면 뷁쒧뗅뙓 같은 녀석들이다 -_ㅠ..

 

친절하게도

MultiByteToWideChar()

WideCharToMultiByte()

라는 함수를 제공해주지만..

 

굉장히 사용이 복잡하다는 문제점을 안고 있다.....

(크기설정 이나 옵션설정도 필요하다 -_-)

 

그래서 찾다 발견한 ...

 

#include <atlconv.h>
 USES_CONVERSION; // W2A , A2W를 사용하기 위한 디파인..

W2A() // 유니코드->멀티

A2W() // 멀티 -> 유니코드

 

 

사용하기전에

 USES_CONVERSION;

해줘야하는 점이 좀 복잡하긴하지만..

뭐 그래도 훨씬 간단한 것이다!!!!!!

 

 char szMult[] = "멀티녀석들!!";
 wchar_t szWide[] = L"유니코드닷";


 USES_CONVERSION;
 strcpy(szMult, W2A(szWide)); // 유니코드 -> 멀티바이트 복사
 _tcscpy(szWide, A2W(szMult)); // 멀티바이트 -> 유니코드 복사

 

뭐 그래도 훨씬 간단한 것이다!!!!!!

출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10104&eid=HDBIpLK2dKJq8ky5IX8Ecll+WHWB6BAr&qb=x9S89iC4xbCzuq+89r+hIMfUvPY=&pid=f41gKwoi5UKsstAfjAKsss--511308&sid=rkRgAsFUhEgAAHOWCcQAAAA4
에서 맨 밑의답변


int TestFn()
{
   return 1;
}

void TestFn2(void* pFunction)
{
   typedef int (*FunctionTest)();
   FunctionTest TestFnTemp = (FunctionTest)pFunction;
   std::cout << TestFnTemp() << std::endl;
}

void TestMain()
{
   TestFn2(&TestFn);
}

이렇게 하는이유야... 소스를 좀더 간결화 하기 위해서라고 봅니다.
꽤 편하구요.

+ Recent posts