Blog Stats
  • Posts - 7
  • Articles - 0
  • Comments - 319
  • Trackbacks - 5

 

Libreria di Classi C++ - Conversione da String a char

In questi giorni ho trovato un po' di difficoltà nel trovare documentazione e informazioni sulla conversione di Stringhe in char.
Il problema non è tanto in un progetto WindowsForms o Console (linguaggi C++ .NET) dove l'operazione è piuttosto semplice, ovvero basta scrivere:

#include <stdlib.h>        
#include <stdio.h>
#include <malloc.h>

void main( void )
{
DWORD len =50;

//ESEGUO L'ALLOCAZIONE DELL'ARRAY DI CHAR DI DIMENSIONE 50
char* c1 = (char
*) malloc( len ); //oppure basta scrivere char* c1 = new char[50];

String *str = "Hello World";

//INSERISCO I VARI CARATTERI ALL'INTERNO DELL'ARRAY DI CHAR
for (int
i=0;i<str->Length; i++){
     c1[i] = Convert::ToChar(str->Substring(i,1));
}}}

Però se voglio fare lo stesso per un progetto DLL libreria di classi scritto in C++ come faccio?
C'è un esempio di microsoft piuttosto interessante che spiega come risolvere il problema.
L'esempio di trova a questo http://support.microsoft.com/kb/311259/

In particolare il codice è questo:

using namespace System::Runtime::InteropServices;

int _tmain(void)
{

  

//Grazie al Metodo Marshal::StringToHGlobalAnsi riesco a convertire una stringa in un'array di char e mi ritorna il puntatore al primo elemento
//dell'array.
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);

....eseguo le operazioni su str2

//E' molto importante ricorda che la classe Marshal offre un insieme di metodi per l'allocazione della memoria non gestita.
//
Quindi quando si lavora con la memoria non gestita non è più il Garbage ad occuparsi della deallocazione della memoria,
//ma
 sarà nostro compito (cioè compito del programmatore) occuparsi di ciò. Per la classe Marshal il metodo da richiamare è:
   Marshal::FreeHGlobal(str2);

    return 0;
}

Spero possa esservi d'aiuto questo blog.
Ciao

Sara


Feedback

# re: Libreria di Classi C++ - Conversione da String a char

Gravatar thansk oyu 17/06/2007 21:54 | sohbet

# re: Libreria di Classi C++ - Conversione da String a char

Gravatar hydraulic winch,planetary gearbox,slew drive,travel drive,winch drive

hydraulic winch
Planetary gearbox
Travel drive
Swing drive
winch drive
15/07/2011 14:55 | hydraulic winch

# Istanbul tour guide

Gravatar Find private tour guides in Istanbul 30/07/2011 12:54 | Istanbul tour guide

# Im happy I now registered

Gravatar A motivating discussion is definitely worth
comment. I do believe that you should write more on this subject, it may not be a taboo matter but typically
folks don't discuss these subjects. To the next!
Cheers!! 15/04/2017 22:47 | Braley

# re: Libreria di Classi C++ - Conversione da String a char

Gravatar terimakasih telah berbagi

obat perangsang terbaik 14/02/2018 09:30 | aotek seksi

# re: Libreria di Classi C++ - Conversione da String a char

Gravatar TRI7BET<br>
BETME88<br>
SBOBET MOBILE<br> 10/06/2018 20:22 | michelle

# The Easy Method To Get Fit - Pop A Tablet - Take A Supplement

Gravatar My brother suggested I might like this blog. He was entirely right.
This post actually made my day. You cann't imagine simply how much time I had spent for this
information! Thanks! 28/06/2018 14:07 | Gilley

Comments have been closed on this topic.
 

 

Copyright © Sara Fabris