Visual C++ .NET에서 System::String*에서 Char*로 변환하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 311259 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR311259
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Visual C++ .NET에서 Managed Extensions를 사용하여 System::String*에서 char*로 변환하는 몇 가지 방법을 설명합니다.

방법 1:

PtrToStringChars는 실제 String 개체에 대한 내부 포인터를 제공합니다. 이 포인터를 관리되지 않는 함수 호출에 전달한 경우에는 먼저 포인터를 고정시켜 비동기 가비지 수집 프로세스 중에 개체가 이동하지 않도록 해야 합니다.
//#include <vcclr.h>
System::String * str = S"Hello world\n";
const __wchar_t __pin * str1 = PtrToStringChars(str);
wprintf(str1);	
				

방법 2:

StringToHGlobalAnsi는 관리되는 String 개체의 내용을 기본 힙(heap)에 복사한 다음 즉시 ANSI(American National Standards Institute) 형식으로 변환합니다. 이 방법에서는 필요한 기본 힙 메모리가 할당됩니다.
//using namespace System::Runtime::InteropServices;
System::String * str = S"Hello world\n";
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
printf(str2);
Marshal::FreeHGlobal(str2);
				

방법 3:

VC7 CString 클래스에는 관리되는 String 포인터를 사용하고 CString을 해당 내용과 함께 로드하는 생성자가 있습니다.
//#include <atlstr.h>
System::String * str = S"Hello world\n";
CString str3(str); 
printf(str3);
				

전체 예제 코드

//compiler option: cl /clr  
#include <vcclr.h>
#include <atlstr.h>
#include <stdio.h>
#using <mscorlib.dll>
using namespace System;
using namespace System::Runtime::InteropServices;

int _tmain(void)
{
   	System::String * str = S"Hello world\n";

	//method 1
	const __wchar_t __pin * str1 = PtrToStringChars(str);
	wprintf(str1);	

	//method 2
	char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
	printf(str2);
	Marshal::FreeHGlobal(str2);

	//method 3
	CString str3(str); 
	printf(str3);

    return 0;
}
				

참조

가장 많이 참조되는 다른 Visual C++ .NET Microsoft 기술 자료 문서를 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
Visual C++ .NET(2002) 지원 센터
http://support.microsoft.com/default.aspx?xmlid=fh%3BEN-US%3Bvcnet(영문)
Visual C++ .NET에 대한 자세한 내용은 아래의 Microsoft Usenet 뉴스 그룹을 참조하십시오.
Microsoft.public.dotnet.languages.vc




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 311259 - 마지막 검토: 2006년 1월 20일 금요일 - 수정: 3.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
키워드:?
kbhowtomaster kbnewsgrouplink kbmanaged KB311259

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com