Originariamente inviato da stefanoB
in vista wcscopy non funzica ???!!!! :master:
1)
creato un nuovo progetto GUI ed impostato come UNICODE, ma c'è qualcosa che non va:
codice:
wchar_t *txt;
wcscpy(txt,L"prova unicode");
da prima in compilazione error: expected constructor, destructor, o type conversion before '(' token
A parte che c'è un errore logico (vedi dopo), hai incluso string.h?
2)
creato un progetto console compila ma poi in esecuzione si pianta (errore segmentation)
Ovvio, stai tentando di scrivere su un'area di memoria sconosciuta (txt è un puntatore non inizializzato!).
[code]
in altro progetto Gui (era console trasformato in GUI) compila ma da questo errore:
anche con:
codice:
wsprintf((LPTSTR)txt,"%s",(LPCTSTR)"prova unicode 2");
Stesso errore, e in più ti sei dimenticato tutte le L:
codice:
wsprintf(txt,L"%s",L"prova unicode 2");
.
Inoltre, a parte il fatto che qui tutti quei cast non servivano, se stai lavorando solo in Unicode non devi usare LPTSTR e LPCTSTR, ma LPWSTR e LPCWSTR. Per capire quando usarle, è fondamentale capirne la "grammatica" e il significato:
codice:
LP[C][T|W]STR
LP = puntatore (teoricamente basterebbe P, L è un relitto dei tempi dei 16 bit)
C = se c'è significa che è costante
W = se c'è significa che è una stringa Unicode (basata su wchar_t)
T = se c'è significa che è una stringa TCHAR (ANSI o Unicode a seconda di come è impostata la macro _UNICODE)
se non c'è ne W né T la stringa è ANSI
STR = stringa
Quindi:
LPSTR char *
LPCSTR const char *
LPTSTR TCHAR *
LPCTSTR const TCHAR *
LPWSTR wchar_t *
LPCWSTR const wchar_t *
3) wstring
codice:
std::wstring tmp(L"stringa prova");
se tento di appendere o concaternare: expected constructor, destructor, o type conversion before '('
Mostra il codice con cui cerchi di concatenare.