블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2341)N
Unity3D (577)
Programming (473)
Unreal (4)
Gamebryo (56)
Tip & Tech (186)N
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (20)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (13)
Total1,355,263
Today21
Yesterday363
Statistics Graph

달력

« » 2020.1
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

공지사항

태그목록


이번절에서는 닷넷 프레임 워크의 System::String를 일반적으로 C++ 에서 사용할 수 있는 char* 또는 wchar_t* 로 변환 해보도록 해봅시다. 간단한 코드라서 전체 소스와 주석으로 설명을 대신 하겠습니다.

#pragma once


#include <vcclr.h>

#include <atlstr.h>

#include <stdio.h>

#using <mscorlib.dll>

using namespace System;

using namespace System::Runtime::InteropServices;


namespace MainEngine {


    public ref class MainRenderEngine

    {

        // TODO: Add your methods for this class here.

    public:

        bool Create(System::String^ strWindowText)

        {

            // 유니코드 문자열에 할당

            pin_ptr<const wchar_t> wch = PtrToStringChars(strWindowText);


            MessageBox(NULL, wch, _T("유니코드"), MB_OK);


            // 일반 char* 문자열로 변환

            size_t convertedChars = 0;

            size_t  sizeInBytes = ((strWindowText->Length + 1) * 2);

            errno_t err = 0;

            char    *ch = (char *)malloc(sizeInBytes);


            err = wcstombs_s(&convertedChars, ch, sizeInBytes, wch, sizeInBytes);


            if (err != 0)

            {

                MessageBox(NULL, _T("char* 변환 에러"), _T("에러"), MB_OK);

            }


            // ch의 사용

            printf_s("%s\n", ch);



            return true;

        }

    };

}



Posted by blueasa

댓글을 달아 주세요