Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
Ребят, имеется строка типа std::string, в ней несколько слов на кириллице, разделенных символом запятой. Нужно посредством std:regexp прочитать все слова и сохранить в массив, при этом исключая символы запятой. У меня имеется код, но он работает только с латинице, подскажите как его переделать под кириллицу. std::regex tml("\\w+"); std::string str = "Word,word,word"; std::vector<std::string> vec; std::sregex_iterator rei(str.begin(), str.end(), tml); std::sregex_iterator end; while (rei != end) { std::smatch match = *rei; //vec.push_back(match.str()); wxMessageDialog msg(NULL, match.str()); msg.ShowModal(); rei++; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2016, 16:02 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
Как бы достаточно задать кодировку строки. Как это делается -- погляди в моём примере тут http://www.sql.ru/forum/1199792/sostavlenie-slovarya-teksta-s-chastotnostu-upotrebleniya ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 01:15 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
Не, не только кодировку. Надо ещё строки поменять на широкие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2016, 01:17 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
MasterZivНе, не только кодировку. Надо ещё строки поменять на широкие.кодировка-то наверное будет utf8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2016, 16:54 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackMasterZivНе, не только кодировку. Надо ещё строки поменять на широкие.кодировка-то наверное будет utf8 Кодировка внешнего файла будет utf8. Кодировка данных в памяти должна быть utf-32, по-другому средствами библиотек С++ работать с тестом не получится. Ну или расскажи, как, я такого способа не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 08:24 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
странно это.. кодировка utf8 расчитана на один байт на символ, а не на два. вот это не работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. выводит два слова на латинице (установку кодировки я взял перейдя по ссылки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 08:52 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
а вот это работает Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 08:56 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
о, оказывается выражение [a-zа-я]+ работает если установить кодировку. так что MasterZiv прав.. просто классы символов не работают (может баг компилятора?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 09:01 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackкодировка utf8 расчитана на один байт на символ, а не на два. это неправда, либо криво сформулировано один байт на символ только для ASCII (0-127) для остальных 2-4 байта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 09:08 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
Изопропил, название utf8 как бы намикает... если использовать только латиницу, то кол-во байт будет такое же как кол-во символов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 09:15 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
а.. я понял в чем подвох.. не работают не строки, а std::regex, вернее isalpha - эта функция не возращает верного значения когда символ занимает больше места чем планировалось. так что если указать верные char_traits то все должно быть ок и без мароки с кодировками. приду попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 09:30 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackесли использовать только латиницу, то кол-во байт будет такое же как кол-во символов. а вся нелатиница (non ASCII, с единичным старшим битом) - может трактоваться как неведома зверушка, соответсвенно "классы символов не работают " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 09:40 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackстранно это.. кодировка utf8 расчитана на один байт на символ, а не на два. Ну, ты неправ, а код я не глядел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 17:52 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackо, оказывается выражение [a-zа-я]+ работает если установить кодировку. так что MasterZiv прав.. просто классы символов не работают (может баг компилятора?). Классы символов как работают -- надо читать в документации на конкретную библиотеку REGEXP. И видимо чтобы она работала, как-то её настраивать. Как это всё работает --- ещё раз, погляди в моём примере, он рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 17:54 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
alexy_blackа.. я понял в чем подвох.. не работают не строки, а std::regex, вернее isalpha - эта функция не возращает верного значения когда символ занимает больше места чем планировалось. так что если указать верные char_traits то все должно быть ок и без мароки с кодировками. приду попробую. ещё раз, в третий кажется. Изучай код моего примера, там всё сделано, и всё работает. Что там сделать надо , я уже и сам не помню. Надо поставить локейл правильный, и кодировку исходного файла, если я правильно помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 17:56 |
|
||
|
std:regexp
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2016, 19:26 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39258529&tid=2018497]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 298ms |
| total: | 469ms |

| 0 / 0 |
