2010-05-17 29 views
22

S'il vous plaît, comment puis-je savoir la longueur d'une variable de type wchar_t* en C++?obtenir la longueur de `wchar_t *` en C++

exemple de code ci-dessous:

wchar_t* dimObjPrefix = L"retro_"; 

Je voudrais savoir combien de caractères dimObjPrefix contient

+0

Voulez-vous dire un seul caractère ou une chaîne? –

+2

Désolé, j'aurais dû le préciser. Je voulais le nombre de caractères. wcslen semble faire ce que je veux selon http://msdn.microsoft.com/en-us/library/78zh94ax(VS.71).aspx Merci tusbar. – Jacob

+1

@Jacob: un 'wchar_t' n'est pas une chaîne, et il n'a pas de longueur. Je suppose que vous posez des questions sur 'wchar_t *'. Ces astérisques ne sont pas seulement pour le spectacle, vous savez. Ils ne peuvent pas être laissés de côté sans changer la signification du code (et la question) – jalf

Répondre

31
sizeof (wchar_t); 

Edit:

Je viens de remarquer la balise string . Si vous voulez connaître la taille d'un wchar_t chaîne (wchar_t *), vous souhaitez utiliser wcslen(3):

size_t wcslen (const wchar_t *ws); 
+2

Peut-être sizeof (wchar_t), ou wchar_t x suivi de sizeof x? –

+0

@Joseph, il m'a fallu beaucoup de temps pour réaliser ce que tu voulais dire, j'ai édité. Je vous remercie. Désolé pour la confusion. –

+0

En ce qui concerne sizeof(), ni K & R ni la logique ANSI ne donnent de raison pour cette idiosyncrasie concernant les parenthèses; est-ce que n'importe quel lecteur SO sait? –

10

En supposant que vous voulez obtenir la longueur de null TERMINATED chaîne de style C, vous avez deux options:

  1. #include <cwchar> et utiliser std::wcslen (dimObjPrefix);,
  2. ou #include <string> et utiliser std::char_traits<wchar_t>::length (dimObjPrefix);.