Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6088
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Строка для нижнего / верхнего уровня в C++
Какой лучший способ люди нашли, чтобы сделать строку в нижнем регистре / верхнем регистре в C++?
Проблема осложняется тем, что C++ - это не только английский язык программирования. Есть ли хороший многоязычный метод?
#include <algorithm>
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(), ::toupper);
#include <algorithm>
std::string data = "Abc";
std::transform(data.begin(), data.end(), data.begin(), ::toupper);
http://notfaq.wordpress.com/2007/08/04/cc-convert-string-to-upperlower-case/
Кроме того, CodeProject статья для общих строковых методов: http://www.codeproject.com/KB/stl/STL_string_util.aspx
> std::string data = “Abc”;
> std::transform(data.begin(), data.end(), data.begin(), ::toupper);
> std::string data = “Abc”;
> std::transform(data.begin(), data.end(), data.begin(), ::toupper);
Это будет работать, но при этом будет использоваться стандартный "C" locale. Вы можете использовать фасеты, если вам нужно получить tolower для другого locale. Приведенный выше код, использующий фасеты, был бы:
locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
Для копипастеров, которые надеются использовать ответ Nic Strong, обратите внимание на орфографическую ошибку в "use_factet" и отсутствие третьего параметра в std::transform:
locale loc("");
const ctype<char>& ct = use_factet<ctype<char> >(loc);
transform(str.begin(), str.end(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
должно быть
locale loc("");
const ctype<char>& ct = use_facet<ctype<char> >(loc);
transform(str.begin(), str.end(), str.begin(), std::bind1st(std::mem_fun(&ctype<char>::tolower), &ct));
Вы также должны рассмотреть этот вопрос . В основном проблема заключается в том, что стандартные библиотеки C/C++ не были созданы для обработки данных Unicode, поэтому вам придется обратиться к другим библиотекам.
Это может измениться по мере обновления стандарта C++. Я знаю, что следующий компилятор от Borland (CodeGear) будет иметь поддержку Unicode, и я предполагаю, что компилятор Microsoft C++ будет иметь или уже имеет библиотеки строк, которые поддерживают Unicode.
Если у вас есть Boost, то это самый простой способ. Посмотрите на to_upper()/to_lower() в строковых алгоритмах Boost .
Как сказал вам Даррен, самый простой способ-это использовать std::transform.
Но имейте в виду, что в некоторых языках, таких как немецкий, например, не всегда существует однозначное соответствие между нижним и верхним регистром. Строчный символ "esset" (похожий на греческий символ бета) преобразуется в "SS" в верхнем регистре.