13.1. Hardcoding a Unicode String
Problem
You have to hardcode a Unicode, i.e., wide-character, string in a source file.
Solution
Do this by hardcoding the string with a prefix of L
and typing the character into your source editor as you would any other string, or use the
hexadecimal number that represents the Unicode character you’re after. Example 13-1 shows how to do it both
ways.
Example 13-1. Hardcoding a Unicode string
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { // Create some strings with Unicode characters wstring ws1 = L"Infinity: \u221E"; wstring ws2 = L"Euro: _"; wchar_t w[] = L"Infinity: \u221E"; wofstream out("tmp\\unicode.txt"); out << ws2 << endl; wcout << ws2 << endl; }
Discussion
Hardcoding a Unicode string is mostly a matter of deciding how you want to enter the
string in your source editor. C++ provides a wide-character type, wchar_t
, which can store Unicode strings. The exact implementation of
wchar_t
is implementation defined, but it is often
UTF-32. The class wstring
, defined in <string>
, is a sequence of wchar_t
s, just like the string
class is a
sequence of char
s. (Strictly speaking, of course,
wstring
is a typedef
for basic_string<wchar_t>
).
The easiest way to enter Unicode characters is to use the L
prefix to a string literal, as in Example 13-1:
wstring ws1 = L"Infinity: \u2210"; // Use the code itself wstring ws2 = L"Euro: _"; // Or just type it in
Now, you can write these wide-character strings to a wide-character ...
Get C++ Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.