Come convertire da CString
a const char*
nella mia applicazione Unicode MFC?Converti CString in const char *
risposta
Per convertire un CString TCHAR
in ASCII, utilizzare il CT2A
macro - Ciò consentirà anche di convertire la stringa in UTF8 (o qualsiasi altra pagina di codice di Windows):
// Convert using the local code page
CString str(_T("Hello, world!"));
CT2A ascii(str);
TRACE(_T("ASCII: %S\n"), ascii.m_psz);
// Convert to UTF8
CString str(_T("Some Unicode goodness"));
CT2A ascii(str, CP_UTF8);
TRACE(_T("UTF8: %S\n"), ascii.m_psz);
// Convert to Thai code page
CString str(_T("Some Thai text"));
CT2A ascii(str, 874);
TRACE(_T("Thai: %S\n"), ascii.m_psz);
C'è anche una macro da convertire da ASCII -> Unicode (CA2T
) e puoi usarli nelle app ATL/WTL finché hai VS2003 o versioni successive.
Vedere MSDN per ulteriori informazioni.
Ho già ottenuto la risposta alla domanda un po 'prima e hai ragione, ho usato la macro CT2A Grazie. – Attilah
Puoi anche fare TRACE (_T (" ASCII:% S \ n "), CT2A (str) .m_psz); – ajs410
' CA2T' fa ** non ** converte in Unicode. Converte in un 'TCHAR' che può o non può rappresentare caratteri Unicode.' CA2 [ C] W' è la macro che converte in Unicode. – IInspectable
Nota: questa risposta è anteriore al requisito Unicode; guarda i commenti
appena lanciato è:
CString s;
const TCHAR* x = (LPCTSTR) s;
Funziona perché CString ha un operatore di cast per fare esattamente questo.
Utilizzo di TCHAR rende indipendente il codice Unicode; se non sei preoccupato per Unicode puoi semplicemente usare char
invece di TCHAR
.
quando provo il tuo metodo, ottengo questo errore: "Errore errore C2664: 'CppSQLite3DB :: execDML': impossibile convertire il parametro 1 da 'const TCHAR *' a 'const char * '". le mie impostazioni projetc utilizzano Unicode ma la funzione CppSQLite3DB :: execDML richiede un parametro const char *. – Attilah
Come dice Mark, è necessario convertire da un CString Unicode a un CString ANSI: CStringA charstr (unicodestr); È quindi possibile eseguire il cast di CStringA in un const char * – RichieHindle
C'è un cast esplicito sulla CString LPCTSTR, in modo da poter fare (a condizione unicode non è specificato):
CString str;
// ....
const char* cstr = (LPCTSTR)str;
Ho ricevuto questo messaggio di errore: errore C2440: 'tipo cast': impossibile convertire da 'CString' a 'LPCSTR' –
Questa risposta è corretta per ANS. CString. In caso di CString Unicode, vedere la risposta accettata. – amolbk
Se il CString è Unicode, è necessario fare una conversione a multi caratteri byte. Fortunatamente esiste una versione di CString che lo farà automaticamente.
CString unicodestr = _T("Testing");
CStringA charstr(unicodestr);
DoMyStuff((const char *) charstr);
quando uso questo, ottengo questo errore: "Errore errore C2440: 'inizializzazione': impossibile convertire da 'CString' a 'ATL :: CStringT
@Attilah: Grazie per la Ho capito che la sintassi era errata Risolto: –
Ho avuto un problema simile. Ho avuto un buffer char*
con il nome .so in esso.
Non è stato possibile convertire la variabile char*
in LPCTSTR
. Ecco come ho ottenuto intorno ad esso ...
char *fNam;
...
LPCSTR nam = fNam;
dll = LoadLibraryA(nam);
ho recommendo a utilizzare TTOC da ConvUnicode.h
const CString word= "hello";
const char* myFile = TtoC(path.GetString());
Si tratta di una macro per fare conversioni per Unicode
- 1. Converti const char * in const wchar_t *
- 2. Converti const char ** in void *?
- 3. Converti MFC CString in intero
- 4. come convertire const WCHAR * a const char *
- 5. Converti stringa in tipo const char * utilizzando Arduino
- 6. const char * myVar vs. const char myVar []
- 7. domanda printf con variabile const char *
- 8. Converti boost :: uuid in char *
- 9. C++ converte char in const char *
- 10. Come convertire wchar_t * a const char *
- 11. Converti char * in LPWSTR
- 12. Converti lptstr in char *
- 13. Converti CharCode in Char?
- 14. Converti BSTR in char *
- 15. Converti stringa in char
- 16. const char * inizializzazione
- 17. printf% s const char *
- 18. const char * concatenazione
- 19. C++: char ** a const char ** conversione
- 20. const constexpr char * vs. constexpr char *
- 21. Converti int in const wchar_t *
- 22. Converti NSString in char array
- 23. C: Assegnazione di "static const char * const" a "static const char *"
- 24. Converti Go [] byte in un C * char
- 25. Converti char [] per LPCWSTR
- 26. Come trasformare 'const boost :: filesystem2 :: path' in 'const char *'?
- 27. Come memorizzare un const char * in un char *?
- 28. Funzione C++ restituendo const char *
- 29. Come convertire std :: string in const char *?
- 30. Come si converte LPCWSTR in const char *?
Il fatto che siete costruire un programma unicode è CHIAVE per questo problema - PER FAVORE aggiungi questa informazione alla domanda. (o qualcuno con rappresentante lo fa?) – Aardvark