You are expecting a cast of a pointer from one type to another to change the value pointed to. That's not what C++ casts do. They just tell the compiler to assume the pointer points to the new type. To specify a wide literal, use L before the quotes (or new string literals if your compiler supports them). And get rid of the cast, it's just obscuring the bug.