zamiana LPCWSTR na std::string

0

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ź

0
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

0

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 "??"

0

hmmmmmm, a mi się zdawało że LPWSTR zawiera Wide String, a Wide Stringi przechowuje się w std::wstring.

0

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.

0
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..

1 użytkowników online, w tym zalogowanych: 0, gości: 1