Witam ,
Musze sprawdzić czy dany wyraz występuje w tekście . Problem w tym ze mam tylko wskaźnik do tekstu w formacie LPCWSTR . jak zamienic LPCWSTR na std::string w celu dalszej edycji ?Z góry dziękuję za odpowiedź
Może spróbuj tego: http://www.cplusplus.com/reference/std/locale/ctype/widen/
Beju napisał(a)
Może spróbuj tego: http://www.cplusplus.com/reference/std/locale/ctype/widen/
raczej metody z serii mbstowcs aka MultiByteToWideChar i viceversa
Dzięki za pomoc. Użyłem funkcji z 2 linka
bool cvtLPW2stdstring(std::string& s, const LPWSTR pw,
UINT codepage = CP_ACP)
{
bool res = false;
char* p = 0;
int bsz;
bsz = WideCharToMultiByte(codepage,
0,
pw,-1,
0,0,
0,0);
if (bsz > 0) {
p = new char[bsz];
int rc = WideCharToMultiByte(codepage,
0,
pw,-1,
p,bsz,
0,0);
if (rc != 0) {
p[bsz-1] = 0;
s = p;
res = true;
}
}
delete [] p;
return res;
}
problem w tym ze konwertuje ona tylko do momentu wystawienia znaku tab lub nowej linii (debugview pokazuje "??" i "????" ) jak sprawić by te znaki były ignorowane albo zamieniane na "??"
hmmmmmm, a mi się zdawało że LPWSTR zawiera Wide String, a Wide Stringi przechowuje się w std::wstring.
Może to zadziała: http://support.microsoft.com/kb/138813, niestety korzysta ona dość mocno z winshitowych bebechów więc nie wiem czy będzie Ci odpowiadać.
Nie miałem problemów z białymi znakami w tej funkcji, ale nie wiem jak reaguje na polskie literki.
winerfresh napisał(a)
hmmmmmm, a mi się zdawało że LPWSTR zawiera Wide String, a Wide Stringi przechowuje się w std::wstring.
ACK
Beju napisał(a)
Może to zadziała: http://support.microsoft.com/kb/138813, niestety korzysta ona dość mocno z winshitowych bebechów więc nie wiem czy będzie Ci odpowiadać.
Nie miałem problemów z białymi znakami w tej funkcji, ale nie wiem jak reaguje na polskie literki.
ludzie.. czytajcie kody.. przeciez to tez uzywa WideCharToMultiByte.. jak macie problem z gotowcami, przeczytajcie JEJ opis na msdn i sami uzyjcie sensownie..
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.