2010-05-17 7 views
22

Proszę, w jaki sposób mogę znaleźć długość zmiennej typu wchar_t* w języku C++?uzyskać długość `wchar_t *` w C++

przykład kodu poniżej:

wchar_t* dimObjPrefix = L"retro_"; 

Chciałbym dowiedzieć się, ile znaków dimObjPrefix zawiera

+0

Masz na myśli jeden znak lub ciąg? –

+2

Przepraszam, powinienem był to wyjaśnić. Chciałem liczbę znaków. wcslen wydaje się robić to, co chcę, zgodnie z http://msdn.microsoft.com/en-us/library/78zh94ax(VS.71).aspx Dzięki tusbar. – Jacob

+1

@Jacob: 'wchar_t' nie jest łańcuchem i nie ma długości. Zakładam, że pytasz o 'wchar_t *'. Te gwiazdki to nie tylko show, wiesz. Nie można ich pominąć, nie zmieniając znaczenia kodu (i pytania) – jalf

Odpowiedz

31
sizeof (wchar_t); 

Edit:

Właśnie zauważyłem tag string . Jeśli chcesz wiedzieć, rozmiaru wchar_t ciąg (wchar_t *), którego chcesz użyć wcslen(3):

size_t wcslen (const wchar_t *ws); 
+2

Być może sizeof (wchar_t), lub wchar_t x, po którym następuje sizeof x? –

+0

@Joseph, zajęło mi dużo czasu, aby zrozumieć, co masz na myśli, redagowałem. Dziękuję Ci. Przepraszam za zamieszanie. –

+0

Odnośnie sizeof(), ani K & R, ani ANSI Rationale nie podają przyczyny tej idiosynkrazji o nawiasach; Czy ktokolwiek zna się na czytniku SO? –

10

Zakładając, że chcesz uzyskać długość NUL C stylu ciąg, masz dwie opcje:

  1. #include <cwchar> i używać std::wcslen (dimObjPrefix);,
  2. lub #include <string> i używać std::char_traits<wchar_t>::length (dimObjPrefix);.