Unicode characters are represented in C++ by the wchar_t character type. Unicode string literals are denoted by prefixing them with an L, because L is the first letter of Unicode, or wide, er, okay.
So when you want to declare a C style zero terminated string of unicode characters you use:
wchar_t *wide_text = L"I am wide text, feel my girth!";
and when you want to declare a function that takes this type of string you'd prototype it something like:
void display_message( const wchar_t *text_to_display );
However this being C++ why not use std::wstring for all your Unicode text needs?
PS: As Volodya said...
Your problem here is the sizeof - you telling it to use the size of a pointer and not the size of the character array you're passing into the function. You can use something like wcslen but had you used std::wstring instead the code would have been simpler.