The istream and ostream classes work with chars, rather than wchar_ts, and won't interpret wide chars correctly. However, changing them to work with wchar_t would break a large amount of existing code, so they have to be retained for backwards compatibility. Naturally, the standards commitee wanted to provide a portable solution to this, and to this end, the standard now defines wistream and wostream classes, and mirror objects for the standard input and output: wcin and wcout. To work with wide chars, you will want to use those instead of cin and cout.
after more search i found it ;)
here i use 'en_US.UTF-8' string option, but we can change it for other types
> The setlocale function installs the specified system locale or its portion as the new C locale. The modifications remain in effect and influences the execution of all locale-sensitive C library functions until the next call to setlocale. If locale is a null pointer, setlocale queries the current C locale without modifying it.
> category - locale category identifier, one of the LC_xxx macros. May be 0.
> locale - system-specific locale identifier. Can be "" for the user-preferred locale or "C" for the minimal locale
> Return value
> Pointer to a narrow null-terminated string identifying the C locale after applying the changes, if any, or null pointer on failure.