2010-05-17 43 views
22

Por favor, ¿cómo puedo averiguar la longitud de una variable del tipo wchar_t* en C++?obtener la longitud de `wchar_t *` en C++

ejemplo de código siguiente:

wchar_t* dimObjPrefix = L"retro_"; 

Me gustaría saber cuántos caracteres dimObjPrefix contiene

+0

¿Se refiere a un solo carácter o una cadena? –

+2

Lo siento, debería haber dejado eso más claro. Yo quería la cantidad de personajes wcslen parece hacer lo que quiero de acuerdo con http://msdn.microsoft.com/en-us/library/78zh94ax(VS.71).aspx Gracias tusbar. – Jacob

+1

@Jacob: un 'wchar_t' no es una cadena, y no tiene una longitud. Supongo que estás preguntando por 'wchar_t *'. Esos asteriscos no son solo para mostrar, ya sabes. No se pueden omitir sin cambiar el significado del código (y la pregunta) – jalf

Respuesta

31
sizeof (wchar_t); 

Editar:

me he dado cuenta de la etiqueta string . Si desea saber el tamaño de una cadena wchar_t (wchar_t *), que desea utilizar wcslen(3):

size_t wcslen (const wchar_t *ws); 
+2

Tal vez sizeof (wchar_t), o wchar_t x seguido de sizeof x? –

+0

@Joseph, me tomó mucho tiempo darme cuenta de lo que quería decir, lo edité. Gracias. Perdón por la confusion. –

+0

En cuanto a sizeof(), ni K & R ni el ANSI Rationale dan ninguna razón para esta idiosincrasia sobre paréntesis; ¿algún lector SO lo sabe? –

10

Suponiendo que se desea obtener la longitud de la cadena terminada en nulo estilo C, tiene dos opciones:

  1. #include <cwchar> y utilizar std::wcslen (dimObjPrefix);,
  2. o #include <string> y utilizar std::char_traits<wchar_t>::length (dimObjPrefix);.