ht-never (Member)
Rookie
Messaggi: 49
Iscritto: 24/09/2011
|
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 |
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
|
|
Dany (Member)
Pro
Messaggi: 129
Iscritto: 03/05/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?
|
|
ht-never (Member)
Rookie
Messaggi: 49
Iscritto: 24/09/2011
|
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 ^ ?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
ht-never (Member)
Rookie
Messaggi: 49
Iscritto: 24/09/2011
|
no, non conviene rinunciare all'utilizzo di più tipi di dato. Conviene imparare come fare a passare da std::string a System::String^
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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à. |
|
ht-never (Member)
Rookie
Messaggi: 49
Iscritto: 24/09/2011
|
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# |
char chrand() { char c; srand( (unsigned int) time(NULL)); c = (rand() % 26) + 'a'; return c; } string strrand(int i) { char arr[10]; string ret; for(int j=0;i<i;i++) { arr[j]=chrand(); } ret = arr; return ret; }
|
Ultima modifica effettuata da ht-never il 14/06/2012 alle 22:06 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
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++ |
String ^s = textBox1->Text;
array<Char>^car = s->ToCharArray();
for(int i=0; i<car->Length; i++)
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à. |
|
ht-never (Member)
Rookie
Messaggi: 49
Iscritto: 24/09/2011
|
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?
|
|