Teddy님의 이글루

reedok.egloos.com

포토로그 마이가든



데이터 형 변환 string to TCHAR* Programing...

코딩한 서버를 클라이언트와 붙이면서 데이터 형에서 문제를 많이 일으켰다.
첫째, string 을 tchar로 변환
둘째, 멀티바이트 사용 하는 코딩 과 유니코드 사용(내가 코딩한 것) 것 사이의 문제.
TCHAR을 사용한다고 했지만 서버와 클라 사이의 데이터 이동도 많고
결국에는 내 소스 역시 멀티바이트로(클라가 사람이 많으니 다수를 따라서..) 변환 했고
TCHAR로 처리 되었던 것은 string을 char로 변환해서 마무리 했다.

그 과정에서 찾은 데이터 변환 방법 들...
  
방법 1. 외국 블로그에서

How to convert std::string to TCHAR*
출처 - http://ukanth.in/blog/?p=180

typedef std::basic_string<TCHAR> tstring; 
 
TCHAR* StringToTCHAR(string& s)
{
  tstring tstr;
  const char* all = s.c_str();
  int len = 1 + strlen(all);
  wchar_t* t = new wchar_t[len];
  if (NULL == t) throw std::bad_alloc();
  mbstowcs(t, all, len);
  return (TCHAR*)t;
}
 
std::string TCHARToString(const TCHAR* ptsz)
{
     int len = wcslen((wchar_t*)ptsz);
     char* psz = new char[2*len + 1];
     wcstombs(psz, (wchar_t*)ptsz, 2*len + 1);
     std::string s = psz;
     delete [] psz;
     return s;
}
추가 - mbstowcs 함수 : multi byte char 을 wide char로 변환
wcstombs 는 mbstowcs 의 반대.


사용  예)
// IdSet->getText() 는 string.
tstring tstr;
const char* all = IdSet->getText().c_str();
int len = strlen(all)+1;
wchar_t* t = new wchar_t[len];
if( t == NULL )
 throw std::bad_alloc();
mbstowcs( t, all, len );



방법2. String to char*, char* to TCHAR* (유니코드 사용 환경이였으므로 wchar*)

// IdSet->getText() is stl string

// String to char*
char* strID;
size_t tempSize = IdSet->getText().length();
strID = new char[tempSize];  
strcpy( strID, IdSet->getText().c_str() );

// char* to TCHAR*
TCHAR szUniID[256] = {0,};
int len = strlen(strID);
::MultiByteToWideChar( CP_ACP, 0, strID, -1, szUniID, len + 1 );
 
방법 3. string -> const char* -> char* (멀티바이트 사용)
//IdSet->getText() 은 string

char* id;

const char* strID = IdSet->getText().c_str();
id = const_cast<char*>(strID);

// 합쳐서 사용  
id = const_cast<char*>( IdSet->getText().c_str() );



추가 - const char*을 char*로 변환

방법 1. 직접 캐스팅
char* str1;
const char* str2;

str1 = (char*)(str2);

방법 2. 형변환 연산자 const_cast 사용
- const 객체에 대한 포인터를 const가 아닌 객체의 포인터로 변환 할때 사용하는 연산자
str1 = const_cast<char*>(str2);


 


Memory leaks Programing...

Singleton 에러를 잡고 나니 이번에는 다량은 메모리 릭-_-;;
위치도 표시가 안되니 어디서부터 잡아야될지...

아래는 메모리 릭 잡는데 도움을 주는 블로그들

[출처]
〃Detected Memory leaks (디버깅)|작성자 Chuls
http://blog.naver.com/silent1002/17664251

 

[출처] C Runtime 환경의 메모리 릭 잡는 방법(Memory Leak) | 작성자 Hermet
http://hermet.pe.kr/54353236


Singleton Programing...

최근 프로그래밍에 싱글톤을 많이 쓰게 됐는데...
정적으로 전체 프로그램에서 한개만 선언되어야 되는 클래스 객체를 선언해서 사용하는 것처럼 막연하게 사용했다.
(디자인 패턴을 책을 보긴 봤었는데... 머리가 병진인지..;)
근데..
위에서도 말한 최근 프로그래밍 중에 프로그램 종료중에 알수 없는 에러가 발생했는데...
(프로그램 종료시 호출되지 말아야되는 클래스 함수가 호출되는 에러)
여기저기 찾다가 찾은게 싱글톤...
아마도 이번에는 거의 확실한듯...

그래서 싱글톤에 대한 좋은 포스팅 있어서 링크합니다.
혹시 저처럼 싱글톤 기초 지식 없는 분들은 도움 되시길...

http://blog.naver.com/xtar/60008636064 - 네이버 주바리 (xtar) 님 블로그에서 
http://www.iamcorean.net/140 - 김문규님 블로그에서


KT, 애플에 아이폰 기능 변경 요청 잡담...

http://www.etnews.co.kr/news/detail.html?id=200910260171

아이폰 안나오는 이유가 있었네요.
이런 장난질을 하고 있었으니...
조만간 아이폰에서 마음을 비워야 될 듯...
WiFi 빼면 뭐 어쩌라는건지..-_-

되는 놈만 되는 세상...할기의 본링 DNF

참...나는 던파할 때 항상 일개미 정신으로 노가다해서
그래도 지금 살만하게 하는건데...

이런거 보면 사촌 여동생의 한마디가 생각난다는...

수능을 잘 봤던 사촌 여동생의 한 마디...
"오빠 인생은 한방이야."

나는 이렇게 말해주고 싶다.
"오빠는 한방도 없다." -_-
"오빠는 한방 바랬다가는 한방에 훅간다."

하지만 저 스샷은... 부러우면 지는데.. 지는데..
졌어...ㅠ.ㅠ

그리고 난 아마 안될꺼야..ㅠ.ㅠ

1 2 3 4 5 6 7 8 9 10