Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the use of wchar_t in general programming?

Tags:

c++

Today I was learning some C++ basics and came to know about wchar_t. I was not able to figure out, why do we actually need this datatype, and how do I use it?

like image 741
Viku Avatar asked Nov 22 '12 09:11

Viku


People also ask

What is the use of wchar_t?

The wchar_t type is an implementation-defined wide character type. In the Microsoft compiler, it represents a 16-bit wide character used to store Unicode encoded as UTF-16LE, the native character type on Windows operating systems.

What is wchar_t data type?

wchar_t is an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales; the null character shall have the code value zero.

Should I use wchar_t?

No, you should not! The Unicode 4.0 standard (ISO 10646:2003) notes that: The width of wchar_t is compiler-specific and can be as small as 8 bits. Consequently, programs that need to be portable across any C or C++ compiler should not use wchar_t for storing Unicode text.

What is Const wchar_t *?

wcslen() : syntax: size_t wcslen (const wchar_t* wcs); It returns the length of the wide string. This is the wide character equivalent of strlen.


6 Answers

wchar_t is intended for representing text in fixed-width, multi-byte encodings; since wchar_t is usually 2 bytes in size it can be used to represent text in any 2-byte encoding. It can also be used for representing text in variable-width multi-byte encodings of which the most common is UTF-16.

On platforms where wchar_t is 4 bytes in size it can be used to represent any text using UCS-4 (Unicode), but since on most platforms it's only 2 bytes it can only represent Unicode in a variable-width encoding (usually UTF-16). It's more common to use char with a variable-width encoding e.g. UTF-8 or GB 18030.

About the only modern operating system to use wchar_t extensively is Windows; this is because Windows adopted Unicode before it was extended past U+FFFF and so a fixed-width 2-byte encoding (UCS-2) appeared sensible. Now UCS-2 is insufficient to represent the whole of Unicode and so Windows uses UTF-16, still with wchar_t 2-byte code units.

like image 174
ecatmur Avatar answered Oct 13 '22 06:10

ecatmur


wchar_t is a wide character. It is used to represent characters which require more memory to represent them than a regular char. It is, for example, widely used in the Windows API.

However, the size of a wchar_t is implementation-dependant and not guaranteed to be larger than char. If you need to support a specific form of character format greater than 8 bits, you may want to turn to char32_t and char16_t which are guaranteed to be 32 and 16 bits respectively.

like image 39
Agentlien Avatar answered Oct 13 '22 05:10

Agentlien


wchar_t is used when you need to store characters with codes greater than 255 (it has a greater value than char can store).

char can take 256 different values which corresponds to entries in the ISO Latin tables. On the other hand, wide char can take more than 65536 values which corresponds to Unicode values. It is a recent international standard which allows the encoding of characters for virtually all languages and commonly used symbols.

like image 20
intiyaz ahammad shaik Avatar answered Oct 13 '22 07:10

intiyaz ahammad shaik


The wchar_t data type is used to display wide characters that will occupy 16 bits. This datatype occupies "2 or 4" bytes.

Mostly the wchar_t datatype is used when international languages like japanese are used.

like image 27
sohel khalifa Avatar answered Oct 13 '22 05:10

sohel khalifa


I understand most of them have answered it but as I was learning C++ basics too and came to know about wchar_t, I would like to tell you what I understood after searching about it.

  1. wchar_t is used when you need to store a character over ASCII 255 , because these characters have a greater size than our character type 'char'. Hence, requiring more memory.

    e.g.:

           wchar_t var = L"Привет мир\n"; // hello world in russian
    
  2. It generally has a size greater than 8-bit character.

  3. The windows operating system uses it substantially.

  4. It is usually used when there is a foreign language involved.

like image 41
Misaal D'souza Avatar answered Oct 13 '22 05:10

Misaal D'souza


The wchar_t type is used for characters of extended character sets. It is among other uses used with wstring which is a string that can hold single characters of extended character sets, as opposed to the string which might hold single characters of size char, or use more than one character to represent a single sign (like utf8).

The wchar_t size is dependent on the locales, and is by the standard said to be able to represent all members of the largest extended character set supported by the locales.

like image 29
daramarak Avatar answered Oct 13 '22 05:10

daramarak