sábado, 8 de março de 2008

Usando MS Visual Studio 2005 C++

Procedimentos para conversão de strings de "System::String" para "char*"

Situação em que dados de uma interface gráfica ( textBox1->Text ) necessitam ser gravados em arquivos texto ANSI através da biblioteca "stdio".

1) declarar uso da biblioteca "stdio"

        #include <stdio.h>

2) declarar uso do nome de espaço "InteropServices":

        using namespace System::Runtime::InteropServices;

3) código para converter "System::String" em "char*":

        System::String ^ str = textBox1->Text ;
        char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);

        FILE *fh = fopen( "teste.txt", "w" );
        fprintf(fh, "%s", str2);
        fclose(fh);

        Marshal::FreeHGlobal((IntPtr)str2);

Adaptado da Fonte de Referência:

http://support.microsoft.com/kb/311259

Nenhum comentário: