View Full Version : [C++] Convertire stringhe
Barbalbero
31-07-2008, 15:29
E' da stamattina che cerco di convertire una stringa con Visual Studio 2005.
Ho cercato ovunque, ma è possibile che non riesco??
ho una funzione che vuole un const char *
void funz(const char * parametro);
io però usando un OpenFileDialog DLG
prendo DLG->FileName
se lo passo alla funzione mi da
error C2440: '=': impossibile convertire da 'System::String ^' a 'const char *'
Come faccio?
Possibile che in c++ ci siano tutti questi casini quando invece in Java esiste String e va bene per tutto?
(programmo in c++ da 1 giorno, quindi abbiate pazienza)
tomminno
31-07-2008, 16:03
E' da stamattina che cerco di convertire una stringa con Visual Studio 2005.
Ho cercato ovunque, ma è possibile che non riesco??
ho una funzione che vuole un const char *
void funz(const char * parametro);
io però usando un OpenFileDialog DLG
prendo DLG->FileName
se lo passo alla funzione mi da
error C2440: '=': impossibile convertire da 'System::String ^' a 'const char *'
Come faccio?
Possibile che in c++ ci siano tutti questi casini quando invece in Java esiste String e va bene per tutto?
(programmo in c++ da 1 giorno, quindi abbiate pazienza)
Stai usando C++/CLI ovvero .NET
Sei passato da MFC a .NET in una mattinata? :)
Non è che hai fatto un pò di confusione tra i vari progetti disponibili con VS2005?
Barbalbero
31-07-2008, 16:07
guarda ho in testa una confusione assurda.
A me serve solo un modo per poter usare le openCV e creare un'interfaccia grafica semplice da programmare.
Stamattina usavo MFC perché su tutte le guide alle openCV che ho trovato c'erano esempi che usavano le MFC. Poi mi sono reso conto che è un bordello.
Allora ho cambiato e ho provato a fare "crea un'applicazione per windows"
tu cosa mi consigli di fare?
tomminno
31-07-2008, 16:51
guarda ho in testa una confusione assurda.
A me serve solo un modo per poter usare le openCV e creare un'interfaccia grafica semplice da programmare.
Stamattina usavo MFC perché su tutte le guide alle openCV che ho trovato c'erano esempi che usavano le MFC. Poi mi sono reso conto che è un bordello.
Allora ho cambiato e ho provato a fare "crea un'applicazione per windows"
tu cosa mi consigli di fare?
Il tempo che hai a disposizione è poco, non è facile prendere dimestichezza con una libreria grafica, specialmente poi se non hai mai lavorato in C++.
Le soluzioni che hai davanti sono 2:
1)Studi un minimo le MFC e fai con quelle.
2)Provi le wxWidgets, però è una strada che potrebbe portare via più tempo all'inizio per via della libreria da compilare e del progetto da creare (ci sono però le guide che spiegano esattamente come fare, oppure sfrutti un progetto presente negli esempi della libreria e lo modifichi alle tue esigenze).
Secondo me sono molto più facili da usare delle MFC.
Io ti cosiglio un'occhiata a http://larryo.org/work/information/wxopencv/index.html
Secondo me ti conviene scaricare le wxWidgets, compilarle (apri la soluzione compili e... aspetti) ed usare un editor tipo wxGlade per il design dell'interfaccia, prendi i file cpp generati da wxGlade e li copi nella soluzione del Visual Studio, da li compili e scrivi il tuo codice.
Lo so non è tutto integrato come in Java.
E' da stamattina che cerco di convertire una stringa con Visual Studio 2005.
Ho cercato ovunque, ma è possibile che non riesco??
ho una funzione che vuole un const char *
void funz(const char * parametro);
io però usando un OpenFileDialog DLG
prendo DLG->FileName
se lo passo alla funzione mi da
error C2440: '=': impossibile convertire da 'System::String ^' a 'const char *'
Come faccio?
Possibile che in c++ ci siano tutti questi casini quando invece in Java esiste String e va bene per tutto?
(programmo in c++ da 1 giorno, quindi abbiate pazienza)
Eheh... Ci sono si' questi casini.
In C++ tra i possibili modi per gestire una stringa mi vengono in mente le
CHAR*
TCHAR*
WCHAR*
OLECHAR*
BSTR
mentre in Java e in C# c'e' solo string che si occupa di tutto.
Problemi? Uno. In C# ogni carattere e' da 16bit.
Questo significa 2 cose:
E' ostico leggere i file di testo in modalita' binaria (ma non e' un grosso problema, basta non farlo)
La manipolazione di stringhe e' piu' lenta, essendo 16bit e non 8bit ciascun carattere
La manipolazione di stringhe e' maggiormente lenta sui nostri processori, essendo che le istruzioni a 16bit sui sistemi 32bit e 64bit sono piu' lente delle 32bit e 64bit stesse. Immagino che questo aspetto sia stato comunque ottimizzato alla meglio nel codice.
Come ti hanno consigliato altri, se devi per forza usare quella libreria ti consiglio di usare il VC++ Nativo e non il C++.net o il C#, altrimenti dovresti imparare il Masrhaling, che e' direi quasi inarrivabile se non si hanno discrete conoscenze sia del VC++ che del C#.
Barbalbero
31-07-2008, 17:12
Il tempo che hai a disposizione è poco, non è facile prendere dimestichezza con una libreria grafica, specialmente poi se non hai mai lavorato in C++.
Le soluzioni che hai davanti sono 2:
1)Studi un minimo le MFC e fai con quelle.
2)Provi le wxWidgets, però è una strada che potrebbe portare via più tempo all'inizio per via della libreria da compilare e del progetto da creare (ci sono però le guide che spiegano esattamente come fare, oppure sfrutti un progetto presente negli esempi della libreria e lo modifichi alle tue esigenze).
Secondo me sono molto più facili da usare delle MFC.
Io ti cosiglio un'occhiata a http://larryo.org/work/information/wxopencv/index.html
Secondo me ti conviene scaricare le wxWidgets, compilarle (apri la soluzione compili e... aspetti) ed usare un editor tipo wxGlade per il design dell'interfaccia, prendi i file cpp generati da wxGlade e li copi nella soluzione del Visual Studio, da li compili e scrivi il tuo codice.
Lo so non è tutto integrato come in Java.
sto dando un'occhiata alle wxWidgets. A questo punto che vantaggi ho ad utilizzare Visual Studio se faccio l'interfaccia con wxGlade?
non è meglio (o possibile) passare a linux, usare gcc e wxGlade per le interfacce? Visto che linux è molto più veloce di windows... oppure ci sono problemi nell'interfaccare la webcam?
Parlo da nonsapiente, magari è una stupidata
tu cosa mi consigli di fare? studiare. Microsoft non è famosa per la curve d'apprendimento leggere, anzi.
spendi un po' di tempo all'inizio e leggiti con ordine tutto quello che c'è da leggere, e vedrai che poi andrai spedito come un fulmine.
DanieleC88
31-07-2008, 18:48
Concordo con 71104, la cosa migliore è avere pazienza e studiare. Se puoi permetterti un po' di tempo per dare un'occhiata alle diverse librerie grafiche, ti consiglio di dare una possibilità a Qt, oltre che a wxWidgets come già consigliato.
ciao ;)
tomminno
01-08-2008, 07:45
sto dando un'occhiata alle wxWidgets. A questo punto che vantaggi ho ad utilizzare Visual Studio se faccio l'interfaccia con wxGlade?
Hai l'IDE con capacità di debug che non hanno pari in altri ambienti, wxGlade serve solo come designer d'interfaccia.
non è meglio (o possibile) passare a linux, usare gcc e wxGlade per le interfacce? Visto che linux è molto più veloce di windows... oppure ci sono problemi nell'interfaccare la webcam?
Parlo da nonsapiente, magari è una stupidata
L'interfaccia verso la webcam la fanno le OpenCV, se è supportata non ci sono problemi. Sotto Linux per il C++ il migliore che ho provato è Code::Blocks che oltretutto ha wxSmith integrato per il design di interfacce con le wx.
Però per il debug è anni luce indietro a VS.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.