Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert a unicode String In C++ To Upper Case

How we can convert a multi language string or unicode string to upper/lower case in C or C++.

like image 302
Pankaj Avatar asked Aug 01 '13 10:08

Pankaj


People also ask

How can we convert a string to uppercase and lowercase?

The toUpperCase() method converts a string to upper case letters. Note: The toLowerCase() method converts a string to lower case letters.

Does Toupper work on strings in C?

toupper() function in CThe toupper() function is used to convert lowercase alphabet to uppercase. i.e. If the character passed is a lowercase alphabet then the toupper() function converts a lowercase alphabet to an uppercase alphabet. It is defined in the ctype.

What is the function to convert a character a into upper case?

The toupper() function changes the lowercase alphabets to uppercase alphabets. Here is an example where we use toupper() for lowercase alphabets. Explanation: As the input string contains lowercase characters, the output string contains the converted uppercase of all the characters.


1 Answers

If your system is already in UTF-8, by using std::use_facet, you can write:

#include <iostream>
#include <locale.h>

int main() {
    std::locale::global(std::locale(""));  // (*)
    std::wcout.imbue(std::locale());
    auto& f = std::use_facet<std::ctype<wchar_t>>(std::locale());

    std::wstring str = L"Zoë Saldaña played in La maldición del padre Cardona.";

    f.toupper(&str[0], &str[0] + str.size());
    std::wcout << str << std::endl;

    return 0;
}

And you get (http://ideone.com/AFHoHC):

ZOË SALDAÑA PLAYED IN LA MALDICIÓN DEL PADRE CARDONA.

If it don't work you will have to change (*) into std::locale::global(std::locale("en_US.UTF8")); or an UTF-8 locale you actually have on the plateform.

like image 77
Kyle_the_hacker Avatar answered Sep 30 '22 07:09

Kyle_the_hacker