Yo en Ubuntu lo hago de la siguiente manera (trabajando con wstring y sus amiguetes y con el locale "es_ES.utf8") Espero que te sea útil.
Código C++:
Ver original#include <iostream>
#include <locale>
#include <string>
using namespace std;
int main(){
wstring str;
wcout << L"Introduce la cadena a poner en mayúsuculas: ";
getline(wcin,str);
for (size_t i = 0; i < str.length(); i++)
wcout << str;
}