숫자를 문자로 문자를 숫자로 변환....?!?!
늘 쓰는 것이지만 막상 쓸려고 하면 기억이 나지 않죠(Copy&Paste의 부작용인듯^..^)
그래서 늘 검색질이죠..ㅋㅋ

그냥 제가 필요할때 볼려고 올려봅니다.

1) Converts an integer to a string

int nstyle = 100;
TCHAR szStyle[10] = {0};
_itot_s(nstyle , szStyle, 10);    -> nstyle 의 숫자값을 szStyle에 TCHAR 타입으로 변환.
※ UNICODE로 정의했으면 TCHAR은 wchar 타입이고 아니면 char 타입임.

2) Converts a string  to an integer
  _bstr_t width = "200";
    int nWidth  = _ttoi(width); 

초간단....
요즘은 멀티바이트보다 바로 유니코드로 주로 개발해서 TCHAR은 잘 쓰지 않지만.. 그래도 구애받지 않고 개발할땐 유용하죠....

 

 

 

파일명을 랜덤하게 생성한기 위해서 작성했던 코드입니다. 
Random 함수는 제한적이고, 중복될 여지도 있는 것 같고....

유일한 키를 생성할 때는 Guid 만한게 없죠.....

[샘플 코드]

// GUID을 생성해서
void CUtil::MakeGUID(_bstr_t* guid)
{

 WCHAR TestGUIDString[40] = {0,}; 
 _GUID TestGUID;

 // CoCreateGuid 생성하기
 CoCreateGuid(&TestGUID); 
 
// 생성한 GUID를 829C1584-C57B-4dac-BCE7-6F33455F747A 와 같은 포멧으로 변환.
 wsprintf(TestGUIDString, L"%.8X-%.4X-%.4X-%.2X%.2X-%.2X%.2X%.2X%.2X%.2X%.2X",
   TestGUID.Data1,    TestGUID.Data2,    TestGUID.Data3,  TestGUID.Data4[0],
   TestGUID.Data4[1], TestGUID.Data4[2], TestGUID.Data4[3], TestGUID.Data4[4],
   TestGUID.Data4[5], TestGUID.Data4[6], TestGUID.Data4[7]
 );

 *guid = TestGUIDString;

}



필자가 회사의  ATL을 사용해서 ActiveX 파일 업로드 컨트롤을 개발하면서, 유니코드 문자열을 멀티바이트로 변환할 필요가 있어서 작성한 코드입니다.
프로젝트의 기본 Character Set을 "Use Unicode Character Set"으로 한 관계로 별도로 변환을 해야 했던 것으로 기억납니다.

[샘플 참조]

   포스트(POST) 될 데이타를 멀티바이트로 변환해서 업로드 함...
  ......  
  ......  
 
  // _T 매크로 : 기본 문자셋이 유니코드일 경우 wchar_t 으로 변환됨.
  TCHAR sContHeaderParam[2048]  = {0}; 
  _stprintf(sContHeaderParam, _T("\r\n-----------------------------7d425b3bf0cdc\r\nContent-Disposition: form-data; name=\"XMDocID\"\r\n\r\n%s"), XMDocID); 

  // 멀티바이트(char*)로 변환시 사이즈 가져오기.
  int AnsiStrSize = WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, NULL, 0, NULL, NULL); 

  char *AnsiStrHeaderParam = new char[AnsiStrSize+1];  // 가져온 사이즈로 메모리 할당.
  memset(AnsiStrHeaderParam, 0, AnsiStrSize+1);      // 초기화.
  WideCharToMultiByte(CP_ACP, 0, sContHeaderParam, -1, AnsiStrHeaderParam, AnsiStrSize, 0, 0);  //변환

  ........
  // 모든 작업이 마무리된 후에 메모리 해제.
  free(AnsiStrHeaderParam);


  결국, wchar_t 문자열을 char*로 변환하는 것임.