성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • Boot Code 분석
  • 문자열 나누기
  • MFC
  • ARM Reverse Engineering
  • WINAPI

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

MFC

[MFC] char*, wchar_t*, _bstr_t, CComBSTR, CString, basic_string, System.String 변환

2014. 2. 28. 20:12

출처:http://cafe.naver.com/itlicensecafe.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=32229

char *, wchar_t *, 
_bstr_t, CComBSTR, CString, basic_string, System.String 변환

char *

char *orig = "Hello, World!";
 
size_t origsize = strlen(orig) + 1;    // wchar_t *
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
 
_bstr_t bstrt(orig);    // _bstr_t
bstr += " (_bstr_t)";
 
CComBSTR ccombstr(orig);    // CComBSTR
if(ccombstr.Append(L"(CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
CString cstring(orig);    // CString
cstring += " (CString)";
 
string basicstring(orig);    // basic_string
basicstring += " (basic_string)";
 
String ^systemstring = gcnew String(orig);    // System.String
systemstring += " (System::String)";
delete systemstring;


 
wchar_t *

wchar_t *orig = L"Hello, World!";
 
size_t origsize = wcslen(orig) + 1;    // char *
const size_t newsize = 100;
size_t convertedChars = 0;
char nstring[newsize];
wcstombs_s(&convertedChars, nstring, origsize, orig, _TRUNCATE);
strcat_s(nstring, " (char *)");
 
_bstr_t bstrt(orig);    // _bstr_t
bstrt += " (_bstr_t)";
 
CComBSTR ccombstr(orig);    // CComBSTR
if(ccombstr.Append(L" (CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
CString cstring(orig);    // CString
cstring += " (CString)";
 
wstring basicstring(orig);    // basic_string
basicstring += L" (basic_string)";
 
String ^systemstring = gcnew String(orig);    // System.String
systemstring += " (System::String)";
delete systemstring;


 
_bstr_t
    BSTR을 캡슐화하는 COM 지원 클래스 (comutil.h, comsuppw.lib 또는 comsuppwd.lib)

_bstr_t orig("Hello, World!");
 
const size_t newsize = 100;    // char *
char nstring[newsize];
strcpy_s(nstring, (char *)orig);
strcat_s(nstring, " (char *)");
 
wchar_t wcstring[newsize];    // wchar_t *
wcscpy_s(wcstring, (wchar_t *)orig);
wcscat_s(wcstring, L" (wchar_t *)");
 
CComBSTR ccombstr((char *)orig);    // CComBSTR
if(ccombstr.Append(L" (CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
CString cstring((char *)orig);    // CString
cstring += " (CString)";
 
string basicstring((char *)orig);    // basic_string
basicstring += " (basic_string)";
 
String ^systemstring = gcnew String((char *)orig);    // System.String
systemstring += " (System::String)";
delete systemstring;


 
CComBSTR        ATL의 BSTR wrapper 클래스 (atlbase.h)

CComBSTR orig("Hello, World!");
CW2A printstr(orig);
 
const size_t newsize = 100;    // char *
char nstring[newsize];
CW2A tmpstr1(orig);
strcpy_s(nstring, tmpstr1);
strcat_s(nstring, " (char *)");
 
wchar_t wcstring[newsize];    // wchar_t *
wcscpy_s(wcstring, orig);
wcscat_s(wcstring, L" (wchar_t *)");
 
_bstr_t bstrt(orig);    // _bstr_t
bstrt += " (_bstr_t)";
 
CString cstring(orig);    // CString
cstring += " (CString)";
 
wstring basicstring(orig);    // basic_string
basicstring += L" (basic_string)";
 
String ^systemstring = gcnew String(orig);    // System.String
systemstring += " (System::String)";
delete systemstring;


 
CString        ATL/MFC의 템플릿 클래스인 CStringT의 기본 구현 클래스.

CString orig("Hello, World!");
 
const size_t newsize = 100;    // char *
char nstring[newsize];
strcpy_s(nstring, orig);
strcat_s(nstring, " (char *)");
 
// wchar_t * (이 작업을 하려면 먼저 char *로 바꿔야 한다)
size_t origsize = strlen(orig) + 1;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
 
_bstr_t bstrt(orig);    // _bstr_t
bstrt += " (_bstr_t)";
 
CComBSTR ccombstr(orig);    // CComBSTR
if(ccombstr.Append(L" (CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
string basicstring(orig);    // basic_string
basicstring += " (basic_string)";
 
String ^systemstring = gcnew String(orig);    // System.String
systemstring += " (System::String)";
delete systemstring;


 
basic_string        STL 클래스 (<string>)

string orig("Hello, World!");
 
const size_t newsize = 100;    // char *
char nstring[newsize];
strcpy_s(nstring, orig.c_str());
strcat_s(nstring, " (char *)");
 
// wchar_t * (이 작업을 하려면 먼저 char *로 바꿔야 한다)
size_t origsize = strlen(orig.c_str()) + 1;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
 
_bstr_t bstrt(orig.c_str());    // _bstr_t
bstrt += "(_bstr_t)";
 
CComBSTR ccombstr(orig.c_str());    // CComBSTR
if(ccombstr.Append(L" (CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
Cstring cstring(orig.c_str());    // CString
cstring += " (CString)";
 
String ^systemstring = gcnew String(orig.c_str());    // System.String
systemstring += " (System::String)";
delete systemstring;


 
System.String        .NET 프레임워크 클래스 (mscorlib)

String ^orig = gcnew String("Hello, World!");
 
pin_ptr<const wchar_t> wch = PtrToStringChars(orig);
 
size_t origsize = wcslen(wch) + 1;    // char *
const size_t newsize = 100;
size_t convertedChars = 0;
char nstring[newsize];
wcstombs_s(&convertedChars, nstring, origsize, wch, _TRUNCATE);
strcat_s(nstring, " (char *)");
 
wchar_t wcstring[newsize];    // wchar_t *
wcscpy_s(wcstring, wch);
wcscat_s(wcstring, L" (wchar_t *)");
 
_bstr_t bstrt(wch);    // _bstr_t
bstrt += " (_bstr_t)";
 
CComBSTR ccombstr(wch);    // CComBSTR
if(ccombstr.Append(L" (CComBSTR)") == S_OK) CW2A printstr(ccombstr);
 
CString cstring(wch);    // CString
cstring += " (CString)";
 
wstring basicstring(wch);    // basic_string
basicstring += L" (basic_string)";
 
delete orig;



정말 감사감사하다 ㅠㅠ 진짜 흑흑


저작자표시

'MFC' 카테고리의 다른 글

[MFC] CString 클래스 및 멤버함수  (0) 2014.03.05
[MFC] 자료형 정리  (0) 2014.03.01
[MFC] 출력 폰트 키우기  (0) 2014.02.28
[MFC] CString To TCHAR 변환하기  (0) 2014.02.27
[MFC] 문자열 _T("") 와 L""  (0) 2014.02.27
    'MFC' 카테고리의 다른 글
    • [MFC] CString 클래스 및 멤버함수
    • [MFC] 자료형 정리
    • [MFC] 출력 폰트 키우기
    • [MFC] CString To TCHAR 변환하기
    성엽이
    성엽이

    티스토리툴바