Wstring - dziwne działanie find

1

Zmienna text ma wartość:

L" ustawy z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych"
pos = text.find(L"ustawy z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych");     //pos = std::wstring::npos
pos = text.find(L" ustawy z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych");    //pos = 0
pos = text.find(L"ustawy z dnia 9 września 2000 r. o podatku od czynności ");             //pos = std::wstring::npos
pos = text.find(L"ustawy z dnia 9 września 2000 r. o podatku od czynno");                 //pos = std::wstring::npos
pos = text.find(L"ustawy z dnia 9 września 2000 r. o ");        //pos = std::wstring::npos
pos = text.find(L"ustawy z dnia");		          //pos = 1

Co to niby ma być... Jak drugi przykład może zwracać 0, skoro pierwszy zwraca npos...? Mam tu jakąś tragiczną literówkę...? Czy nie wiem czegoś istotnego o metodzie find?

1

Visual C++ Express 2010:

1
0
1
1
1
1

teksty skopiowałem z twojego posta, bez dotykania.
podaj jaki kompilator... ;-)

EDIT: być może w tekście masz jakieś NBSP albo inny dziwny znacznik, który się zgubił podczas wklejania do posta…

1

Visual Studio 2008. Tekst w zmiennej text jest pobierany z xmla, do tej funkcji jest przekazywany jako parametr:

const std::wstring &text>/code>

Parametry find wklepywałam z palca, więc tam na pewno dzikich znaków nie ma.
Natomiast pewnie masz rację, że przyczyną są jakieś nietypowe znaki w zmiennej text, których nie widzę pod debuggerem :/ Nic to, następny krok - pętelka po stringu i plucie kodami ASCII... 

Muszę jednak wyrazić swoje zdziwienie... gdzie niby te specjalne znaki się znajdują, że powodują, że pierwszy przykład nie przechodzi, a drugi już tak? :| To musi być jakiś bardzo dziwny układ...

Nic to, idę debugować ;)

Edit: I mam - twarde spacje! Taki prosty błąd...

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