Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/103: Рейтинг темы: голосов - 103, средняя оценка - 4.86
 Аватар для [WRG]
53 / 53 / 37
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1

std::string::find и кириллица

25.08.2013, 21:54. Показов 20798. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть простенький код
C++
1
2
3
4
5
6
7
8
9
#include <iostream>       // std::cout
#include <string>         // std::string
 
int main ()
{
    std::string str = "привет";
    std::cout << str.find("ве");
    return 0;
}
если в str содержится кириллица, то find работает как попало, выдаёт неверный результат.
с английскими буквами всё нормально. как бороться с этим, позарез нужен метод find, помогите пожалуйста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2013, 21:54
Ответы с готовыми решениями:

Почему std::string::find не находит подстроку?
Вот: std::string str = &quot;01234567890&quot;; int p = str.find(&quot;23&quot;, 0, 5); std::cout &lt;&lt; p; На экране моника вывод проs'а: -1...

Как работает функция std::string::find(...)
здравствуйте есть допустим вот такой код #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

28
 Аватар для [WRG]
53 / 53 / 37
Регистрация: 20.11.2011
Сообщений: 243
Записей в блоге: 1
25.08.2013, 22:47  [ТС]
Студворк — интернет-сервис помощи студентам
благодарю, попробую использовать его
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
25.08.2013, 23:59
Use UTF-8, Luke!
wstring - так себе вариант. Не переносим, если собираешься работать с текстом рассмотри вариант UTF-8.
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
26.08.2013, 00:02
Цитата Сообщение от Герц Посмотреть сообщение
Use UTF-8, Luke!
wstring - так себе вариант. Не переносим, если собираешься работать с текстом рассмотри вариант UTF-8.
Так как правильно код будет выглядеть, чтоб переносился и т.д.?
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
26.08.2013, 11:04
C++
1
2
3
4
5
int main () {
    std::string str = u8"привет";
    std::cout << str.find(u8"ве");
    return 0;
}
Как-то так, но помимо этого для общения, например, с WinAPI, понадобится конверсия UTF-8 в UTF-16 и обратно, тут можно применить свой код (он довольно прост) или какой-нибудь libiconv.
Но стоит заметить, что строки лучше хранить в отдельном файле и читать из него, а не хранить в коде. В случае с Visual C++ исходники он интерпретирует в ASCII (например с кодировкой Windows-1251) и твоя строка в коде может превратиться в крякозябры. Если строки хранить в отдельном файле, но такого не случится.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
26.08.2013, 15:21
На VS2010 все работает.
Миниатюры
std::string::find и кириллица  
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.08.2013, 15:23
zer0mail, у ТС Linux.
0
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
26.08.2013, 15:42
введи библиотеку
C++
1
#include <locale>
а потом в main() вставляй
C++
1
setlocale(LC_ALL, "RUS")
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
26.08.2013, 16:37
Toshik_, <locale.h> для setlocale. Ну или <clocale>, ибо locale никакого отношения к этой функции не имеет
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
26.08.2013, 18:16
Цитата Сообщение от alsav22 Посмотреть сообщение
zer0mail, у ТС Linux.
Ни имел дела с разработкой в Linux. Но если бы имел, то сначала разобрался с кодировками: какие поддерживаются, какие средства поддержки есть и какие из них предпочтительнее ("родней").
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2013, 18:16

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...

Передача функции указатель на элемент std::vector<std::string>
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...

Операция std::cout для Объекта типа std::string
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий этим операндам&quot; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru