Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to initialize and print a std::wstring?

I had the code:

std::string st = "SomeText"; ... std::cout << st; 

and that worked fine. But now my team wants to move to wstring. So I tried:

std::wstring st = "SomeText"; ... std::cout << st; 

but this gave me a compilation error:

Error 1 error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax> &)' : cannot convert parameter 1 from 'const char [8]' to 'const std::basic_string<_Elem,_Traits,_Ax> &' D:...\TestModule1.cpp 28 1 TestModule1

After searching the web I read that I should define it as:

std::wstring st = L"SomeText"; // Notice the "L" ... std::cout << st; 

this compiled but prints "0000000000012342" instead of "SomeText".

What am I doing wrong ?

like image 289
Roee Gavirel Avatar asked Jan 09 '12 11:01

Roee Gavirel


People also ask

How do I print a std::wstring?

Another way to print wide string: std::wstring str1 = L"SomeText"; std::wstring strr2(L"OtherText!"); printf("Wide String1- %ls \n", str1. c_str()); wprintf(L"Wide String2- %s \n", str2.

What is a Wstring C++?

This function is used to convert the numerical value to the wide string i.e. it parses a numerical value of datatypes (int, long long, float, double ) to a wide string. It returns a wide string of data type wstring representing the numerical value passed in the function.


2 Answers

To display a wstring you also need a wide version of cout - wcout.

std::wstring st = L"SomeText"; ... std::wcout << st;  
like image 178
Bo Persson Avatar answered Sep 28 '22 23:09

Bo Persson


Use std::wcout instead of std::cout.

like image 20
hmjd Avatar answered Sep 29 '22 00:09

hmjd