GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::setlocale(3) C++ Standard Libary std::setlocale(3)

std::setlocale - std::setlocale


Defined in header <clocale>
char* setlocale( int category, const char* locale);


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


Pointer to a narrow null-terminated string identifying the C locale after applying
the changes, if any, or null pointer on failure.


A copy of the returned string along with the category used in this call to
std::setlocale may be used later in the program to restore the locale back to the
state at the end of this call.


During program startup, the equivalent of std::setlocale(LC_ALL, "C"); is executed
before any user code is run.


Although the return type is char*, modifying the pointed-to characters is undefined
behavior.


Because setlocale modifies global state which affects execution of locale-dependent
functions, it is undefined behavior to call it from one thread, while another thread
is executing any of the following functions: std::fprintf, std::isprint,
std::iswdigit, std::localeconv, std::tolower, std::fscanf, std::ispunct,
std::iswgraph, std::mblen, std::toupper, std::isalnum, std::isspace, std::iswlower,
std::mbstowcs, std::towlower, std::isalpha, std::isupper, std::iswprint,
std::mbtowc, std::towupper, std::isblank, std::iswalnum, std::iswpunct,
std::setlocale, std::wcscoll, std::iscntrl, std::iswalpha, std::iswspace,
std::strcoll, std::wcstod, std::isdigit, std::iswblank, std::iswupper,
std::strerror, std::wcstombs, std::isgraph, std::iswcntrl, std::iswxdigit,
std::strtod, std::wcsxfrm, std::islower, std::iswctype, std::isxdigit.


POSIX also defines a locale named "POSIX", which is always accessible and is exactly
equivalent to the default minimal "C" locale.


POSIX also specifies that the returned pointer, not just the contents of the
pointed-to string, may be invalidated by subsequent calls to setlocale.

// Run this code


#include <cstdio>
#include <clocale>
#include <ctime>
#include <cwchar>


int main()
{
// the C locale will be UTF-8 enabled English;
// decimal dot will be German
// date and time formatting will be Japanese
std::setlocale(LC_ALL, "en_US.UTF-8");
std::setlocale(LC_NUMERIC, "de_DE.UTF-8");
std::setlocale(LC_TIME, "ja_JP.UTF-8");


wchar_t str[100];
std::time_t t = std::time(nullptr);
std::wcsftime(str, 100, L"%A %c", std::localtime(&t));
std::wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);
}


Number: 3,14
Date: 月曜日 2011年12月19日 18時04分40秒


LC_ALL
LC_COLLATE
LC_CTYPE locale categories for std::setlocale
LC_MONETARY (macro constant)
LC_NUMERIC
LC_TIME
locale set of polymorphic facets that encapsulate cultural differences
(class)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.