Talk:cpp/string/wide/towupper
From cppreference.com
< Talk:cpp
Recommended expansion of example
Example
Run this code
#include <iostream> int main() { std::locale::global(std::locale("en_US.utf8")); wchar_t x = L'\U0001044F'; // largest code-number of a lowercase unicode letter, that has a (different) uppercase representation (see http://www.open-std.org/JTC1/SC35/WG5/docs/30112d10.pdf ) std::wcout << "lower:\t" << x << std::endl; std::wcout << "upper:\t" << static_cast<wchar_t>(std::towupper(x)) << std::endl; std::wstring s = L"ä\U0001044E\U0001044F"; std::wcout << "lower:\t" << s << std::endl; auto& f = std::use_facet<std::ctype<wchar_t>>(std::locale()); f.toupper(&s[0], &s[0]+s.size()); std::wcout << "upper:\t" << s << std::endl; return 0; }
Output:
lower: 𐑏 upper: 𐐧 lower: ä𐑎𐑏 upper: Ä𐐦𐐧
User706 (talk) 13:34, 25 November 2018 (PST)
- if you are suggesting adding an example demonstrating the use of std::ctype::toupper, it already exists at that page. --Cubbi (talk) 06:41, 26 November 2018 (PST)
PS:
What I'd love, is an example which does exactly the same thing, but without wchar_t (and without std::wcout); instead using unicode and std::cout. Something like this https://wandbox.org/permlink/EkqJaVjaYd1CHcc9 But can it not be made shorter? (Does one really need the "long" routines from the github gist?)
Any tipps? Thanks.
User706 (talk) 13:43, 25 November 2018 (PST)
- you could avoid those "long routines" by using std::wstring_convert::to_bytes and std::wstring_convert::from_bytes --Cubbi (talk) 06:41, 26 November 2018 (PST)