PDA

Visualizza la versione completa : [C/C++]: Conversione a *char


mxa
26-07-2006, 10:52
Ho la funzione


BOOL CvtkMFCDoc::OnOpenDocument(LPCTSTR lpszPathName)

di MFC che viene richiamata quando faccio file->Apri, e mi mette in lpszPathName il path del file selezionato. Ho l'esigenza di passare quel path ad un'altra funzione che prende come parametro un
const *char
Come faccio a convertirlo???

oregon
26-07-2006, 11:58
Perche' convertirlo? Hai avuto problemi in compilazione?

mxa
26-07-2006, 12:00
Sì:


vtkDEMReader::SetFileName' : cannot convert parameter 1 from 'LPCTSTR' to 'const char *'

oregon
26-07-2006, 12:09
Stai lavorando in UNICODE?

Controlla nelle proprietà del progetto ...

MItaly
26-07-2006, 12:13
LPCTSTR viene definito come LPCSTR, che a sua volta viene definito come char *, a meno di non compilare il programma con la costante UNICODE. Capitano anche a me errori come il tuo, pur compilando il progetto come non-Unicode; per risolvere il problema è sufficiente passare il parametro effettuando un cast esplicito.
P.S.: in applicazioni Windows ti consiglio vivamente di evitare di scrivere funzioni che accettano char* come parametro, e di utilizzare piuttosto il tipo TCHAR, definito in tchar.h, per creare applicazioni che si compilano senza problemi sia con che senza unicode.

mxa
26-07-2006, 12:13
Use Unicode character set...
cosa metto? multi byte character set?

mxa
26-07-2006, 12:15
Originariamente inviato da MItaly
LPCTSTR viene definito come LPCSTR, che a sua volta viene definito come char * (a meno di non compilare il programma con la costante UNICODE); capitano anche a me errori come il tuo, ma è sufficiente passare il parametro effettuando un cast esplicito.
se faccio un cast esplicito a char* sembra che mi prenda solo la prima lettera del path, la C

MItaly
26-07-2006, 12:17
Originariamente inviato da mxa
se faccio un cast esplicito a char* sembra che mi prenda solo la prima lettera del path, la C

Use Unicode character set...
cosa metto? multi byte character set?
No, metti "Disabled" o qualcosa del genere.

mxa
26-07-2006, 12:19
ho provato, adesso mi compila, ma in compenso poi a runtime ricevo degli errori dal programma, sembra che non riesca a trovare il file relativo al path, ma mi pare impossibile!

oregon
26-07-2006, 12:21
Originariamente inviato da mxa
Use Unicode character set...
cosa metto? multi byte character set?

Not Set

Loading