Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto con il casting
Forum - C/C++ - Aiuto con il casting

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
ht-never (Member)
Rookie


Messaggi: 49
Iscritto: 24/09/2011

Segnala al moderatore
Postato alle 16:16
Giovedì, 14/06/2012
Salve ragazzi... ho bisogno di realizzare alcuni algoritmi con le stringhe. Il problema è che non riesco a capire nulla della differenza fra String, System::String, std::string e char *.
Il problema è che ho una textbox chiamata t1 in Windows Form, e vorrei settarne il testo così.
Codice sorgente - presumibilmente Plain Text

  1. t1->Text = RandomString(10);


Il problema è che non riesco a capire cosa dovrebbe ritornare la funzione (è una funzione per generare una stringa di 10 caratter casuali), perchè mi da ogni volta un'errore di conversione.
Dovreste aiutarmi anche per convertire Array in stringhe e viceversa.
-Grazie

PM Quote
Avatar
Dany (Member)
Pro


Messaggi: 129
Iscritto: 03/05/2012

Segnala al moderatore
Postato alle 17:58
Giovedì, 14/06/2012
Se ho capito bene il tuo problema è convertire array in string e vicecersa?
//Per convertire array in string:
string str;
char arr[5]="ciao";
str=arr;   //Credo che l'assegnazione diretta sia sufficiente, in alternativa:
//oppure
str.assign(arr);

//Per convertire da string a array:
string stringa="ciao";
char *array;
strcpy(array,stringa.c_str());

ok?

PM Quote
Avatar
ht-never (Member)
Rookie


Messaggi: 49
Iscritto: 24/09/2011

Segnala al moderatore
Postato alle 20:27
Giovedì, 14/06/2012
Ciao,
ho realizzato l'algoritmo, infatti un sacco di errori prima segnalati ora non ci sono più. Rimane l'ultimo problema: convertire da std:string a System::String^

Inoltre, potresti brevemente dirmi a cosa serve l'operatore ^ ?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:21
Giovedì, 14/06/2012
Stai lavorando con C++.NET e non con un progetto Win32.

A questo punto utilizza solamente le stringhe del .NET e non quelle C++ (nè quelle C) ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ht-never (Member)
Rookie


Messaggi: 49
Iscritto: 24/09/2011

Segnala al moderatore
Postato alle 21:51
Giovedì, 14/06/2012
no, non conviene rinunciare all'utilizzo di più tipi di dato. Conviene imparare come fare a passare da std::string a System::String^

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:02
Giovedì, 14/06/2012
Non ha senso quello che dici ... se un tipo di dato non ti serve, non devi per forza usarlo.


Ultima modifica effettuata da nessuno il 14/06/2012 alle 22:02


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ht-never (Member)
Rookie


Messaggi: 49
Iscritto: 24/09/2011

Segnala al moderatore
Postato alle 22:05
Giovedì, 14/06/2012
Si che devo usarlo. Per fare questo algoritmo devo iterare sui singoli caratteri, quindi mi servono gli array di char, non posso non usarli. E mi serve anche System::String perchè è il tipo di dato del campo Text delle TextBox di Windows Form. Ora... qualcuno può dirmi come si converte fra std::string e System::String?

altrimenti dimmi tu come non usare gli array:
Codice sorgente - presumibilmente C#

  1. char chrand() {
  2.                 char c;
  3.         srand( (unsigned int) time(NULL));
  4.         c = (rand() % 26) + 'a';
  5.                 return c;
  6.         }
  7.         string strrand(int i) {
  8.                 char arr[10];
  9.                 string ret;
  10.                 for(int j=0;i<i;i++) {
  11.                         arr[j]=chrand();
  12.                 }
  13.                 ret = arr;
  14.                 return ret;
  15.         }


Ultima modifica effettuata da ht-never il 14/06/2012 alle 22:06
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 23:02
Giovedì, 14/06/2012
No che non devi usarlo ... il problema è che programmi con .NET senza conoscerne le basi ...

Se usi una stringa di .NET ne tratti i singoli caratteri come vuoi, senza conversioni nelle string di C++ o nei vettori di char di C nativo.

Ad esempio, per vedere i singoli caratteri di un textbox

Codice sorgente - presumibilmente C/C++

  1. String ^s = textBox1->Text;
  2.    array<Char>^car = s->ToCharArray();
  3.  
  4.    for(int i=0; i<car->Length; i++)
  5.       MessageBox::Show( car[i].ToString(), "Test", MessageBoxButtons::OK);



e ovviamente puoi modificarli all'interno dell'array car ...

Se vuoi complicarti comunque la vita, ignora quello che ti ho detto.

Ultima modifica effettuata da nessuno il 14/06/2012 alle 23:04


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ht-never (Member)
Rookie


Messaggi: 49
Iscritto: 24/09/2011

Segnala al moderatore
Postato alle 23:22
Giovedì, 14/06/2012
Ok, ammetto che tu abbia ragione, però a mia discolpa devo dire che i linguaggi di Visual Studio sono documentati infinitamente peggio in confronto a java.

qualcuno conosce una guida online di C++.NET?

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo