229
this->textBox1->Name = L"textBox1";

Although it seems to work without the L, what is the purpose of the prefix? The way it is used doesn't even make sense to a hardcore C programmer.

Puppy
  • 144,682
  • 38
  • 256
  • 465
Kang Min Yoo
  • 2,303
  • 2
  • 14
  • 4

7 Answers7

185

It's a wchar_t literal, for extended character set. Wikipedia has a little discussion on this topic, and c++ examples.

Gleno
  • 16,621
  • 12
  • 64
  • 85
  • 4
    worth mentioning: this recent (2020) ms discussion on c++ string and character literals https://learn.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp – hack-tramp May 05 '21 at 07:44
136

'L' means wchar_t, which, as opposed to a normal character, requires 16-bits of storage rather than 8-bits. Here's an example:

"A"    = 41
"ABC"  = 41 42 43
L"A"   = 00 41
L"ABC" = 00 41 00 42 00 43

A wchar_t is twice big as a simple char. In daily use you don't need to use wchar_t, but if you are using windows.h you are going to need it.

Adam
  • 8,752
  • 12
  • 54
  • 96
saidox
  • 1,377
  • 1
  • 8
  • 2
22

It means the text is stored as wchar_t characters rather than plain old char characters.

(I originally said it meant unicode. I was wrong about that. But it can be used for unicode.)

karadoc
  • 2,641
  • 22
  • 21
21

It means that it is a wide character, wchar_t.

Similar to 1L being a long value.

Bo Persson
  • 90,663
  • 31
  • 146
  • 203
17

It means it's an array of wide characters (wchar_t) instead of narrow characters (char).

It's a just a string of a different kind of character, not necessarily a Unicode string.

R. Martinho Fernandes
  • 228,013
  • 71
  • 433
  • 510
12

L is a prefix used for wide strings. Each character uses several bytes (depending on the size of wchar_t). The encoding used is independent from this prefix. I mean it must not be necessarily UTF-16 unlike stated in other answers here.

jdehaan
  • 19,700
  • 6
  • 57
  • 97
2

Here is an example of the usage: By adding L before the char you can return Unicode characters as char32_t type:

          char32_t utfRepresentation()
      {
                if (m_is_white)
                {
                          return L'♔';
                }

                return L'♚';

      };