Добрых Дел Мастер
С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227
|
Добавлено: 06/08/10 в 15:56 |
OC: Ubuntu 10.04
locale: ru_RU.utf8
Нужно привести параметр командной строки к верхнему регистру. Параметр может быть кириллическим и передается в кодировке текущей локали.
Цитата: |
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(int argc, char** argv)
{
std::locale::global(std::locale(""));
// 1 case
string s = argv[1];
wstring w(s.begin(), s.end());
wcout << w << endl;
transform(w.begin(), w.end(), w.begin(), (int(*)(int)) towupper);
wcout << w << endl;
// 2 case
w = L"тест";
wcout << w << endl;
transform(w.begin(), w.end(), w.begin(), (int(*)(int)) towupper);
wcout << w << endl;
return 0;
}
|
В первом случае (когда берется параметр командной строки) в консоль выводятся знаки вопроса, во втором случае (когда берется зашитый в код параметр) все отлично.
Цитата: |
pixx@pixx:~$ locale
LANG=ru_RU.utf8
LANGUAGE=en
LC_CTYPE="ru_RU.utf8"
LC_NUMERIC="ru_RU.utf8"
LC_TIME="ru_RU.utf8"
LC_COLLATE="ru_RU.utf8"
LC_MONETARY="ru_RU.utf8"
LC_MESSAGES="ru_RU.utf8"
LC_PAPER="ru_RU.utf8"
LC_NAME="ru_RU.utf8"
LC_ADDRESS="ru_RU.utf8"
LC_TELEPHONE="ru_RU.utf8"
LC_MEASUREMENT="ru_RU.utf8"
LC_IDENTIFICATION="ru_RU.utf8"
LC_ALL=
pixx@pixx:~$ Workspace/test/Debug/test тест
????????
????????
тест
ТЕСТ
|
Вопрос: как сделать так, чтобы любую UTF-8 строку, полученную из параметра или файловой системы через readdir можно было привести в верхний регистр?
Кроме использования фреймворков типа Qt со встроенными средствами поддержки UTF8 рабочих решений не нашел...
|
|
|
|
c++,php кодинг
С нами с 22.10.05
Сообщения: 1098
Рейтинг: 558
|
Добавлено: 06/08/10 в 19:00 |
, как разберешься отпиши.
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |