std::string
en Windows se usa generalmente para almacenar cadenas UTF8 (siendo la codificación predeterminada en la mayoría de los sistemas operativos de este lado de 2010), pero es un contenedor "tonto" que en el sentido de que no sabe o le importa cualquier cosa sobre los bytes que está almacenando. Funcionará para leer, almacenar y escribir; pero no para la manipulación de cuerdas.
Debe utilizar el excelente y bien mantenido IBM ICU: Componentes internacionales para Unicode. Es una biblioteca C/C++ para * nix o Windows a la que se ha dedicado una tonelada de investigación para proporcionar una biblioteca de cadenas con reconocimiento de cultura, que incluye una comparación de cadenas insensible a las mayúsculas y minúsculas que es rápida y precisa.
Otro buen proyecto que es más fácil cambiar a para desarrolladores C++ es UTF8-CPP
Estos son los caracteres Unicode, por lo tanto, probablemente debería ser el uso de las amplias versiones de estas funciones/tipos de datos: 'std :: wstring' y' std: : wcout'. –
Lectura esencial: http://www.joelonsoftware.com/articles/Unicode.html –
eche un vistazo a esto: http://en.cppreference.com/w/cpp/string/multibyte –