7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
1

Русский и строки

18.07.2013, 00:36. Показов 947. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот есть такой кусок кода, сравнивающий строки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        while(getline(user_state, buffer)){
            cout << "\n" << buffer;
            pos = buffer.find(your_msg);
            if(pos != -1) {
                for(int i = 0; i < buffer.size(); i++){
                    if(buffer[i] == '=') {pos = i; break;}
                }
            buffer = buffer.substr(pos+1);
            cout << "\n***" << buffer << "***";
            break;
            }
        }
        user_state.clear();
        user_state.seekg(0, ios_base::beg);
    }
Если символ ввести или английские буквы, то совпадения в строке находит, а вот с русскими буквами или словами проблема. Тупо проходит, хотя в файле совпадения есть. Как исправить???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2013, 00:36
Ответы с готовыми решениями:

Строки, русский алфавит
Задание: Дана последовательность слов русского языка, между словами – запятая, за последним словом...

Строки и русский алфавит
В проге считываешь с файла строку на кириллице. Например: &quot;ололо&quot;, длину выведет 10. Почему? А как...

Не работает перенос строки и русский язык
доброго дня совсем новичек, поэтому не серчайте ежели глупости спрашиваю. есть небольшой код:...

Шифрование строки, меняя русский алфавит по часовой стрелке
День добрый. Функция должна брать из файла строку, менять русский алфавит по часовой стрелке, и...

19
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 02:21 2
Ввод русский в коде сделан?
0
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
18.07.2013, 04:04 3
Проще используйте функцию strcmp. Она сравнивает 2 строки.
C++
1
strcmp(str1,str2)
Если ответ 0 то строки равны.
Если ответ отрицателен то str2 больше str1.
Если ответ положителен str1 больше str2.
0
alsav22
18.07.2013, 06:56
  #4

Не по теме:

Цитата Сообщение от Bend3r Посмотреть сообщение
Проще используйте функцию strcmp.
Лишь бы написать? Вопрос о том, как строки сравнивать? Видите тут строки в стиле С, чтобы применять strcpm()?

0
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 12:08  [ТС] 5
Да, под С что-то делать не хочется...
У меня в файле русские слова и ввожу в консоли русские слова, но они друг с другом не совпадают (хотя по сути одинаковы)
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:10 6
Как я понимаю вы сидите в WIndows! Это проблемы с кодировкой! То есть Вам нужно либо изменить кодировку читаемого файла и указать в программе какую кодировку файла вы читаете! Лучше всего использовать Unicode с кодировкой UTF-8. Ну думаю с перекодировкой файла Вы разберетесь ведь это может сделать даже блокнот, а вот с указанием кодировки читаемого файла Вы найдете ответы здесь
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 12:23 7
Цитата Сообщение от angryjack93 Посмотреть сообщение
Да, под С что-то делать не хочется...
У меня в файле русские слова и ввожу в консоли русские слова, но они друг с другом не совпадают (хотя по сути одинаковы)
Я о другом спросил. Не то, что вы вводите, а сделан ли русский ввод. Вот это (в main()) - русский вывод:
C++
1
setlocale(LC_ALL, "RUS");
Вот это - один из вариантов русского ввода и вывода:
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
И в свойствах консоли выбрать шрифт: Lucida Console

Добавлено через 5 минут
Цитата Сообщение от stawerfar Посмотреть сообщение
То есть Вам нужно либо изменить кодировку читаемого файла
Кодировка файла тут ни при чём, тогда бы и английский текст не определялся бы.
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:27 8
Вы явно ничего ни знаете об кодировках! Раз говорите такую ерунду в байтовой кодировке windows первые 127 символов зарезевированы под English а остальные под местную локаль! Ну я думаю вам полезно будет почитать что такое кодировка, а лучше перейдите на линукс там быстро поймете что к чему!
0
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 12:30  [ТС] 9
Ввел вот это:
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
Теперь находит нужное слово в файле, но ввод русских букв происходит другими символами (всякими иероглифами).

Добавлено через 1 минуту
Цитата Сообщение от stawerfar Посмотреть сообщение
Вы явно ничего ни знаете об кодировках! Раз говорите такую ерунду в байтовой кодировке windows первые 127 символов зарезевированы под English а остальные под местную локаль! Ну я думаю вам полезно будет почитать что такое кодировка, а лучше перейдите на линукс там быстро поймете что к чему!
На лэптопе с лицензионным ПО, как-то не хочется все стирать и ставить пингвина)) И я знаю о кодировках, просто без понятия был как совместить кодировку файла и программы с консолью. Пробовал сам, но, увы, не получилось.
0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:31 10
Я вам еще раз говорю измените кодировку файла на UTF-8 и далее читайте его вот так
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 12:33 11
Цитата Сообщение от angryjack93 Посмотреть сообщение
но ввод русских букв происходит другими символами (всякими иероглифами)
Цитата Сообщение от alsav22 Посмотреть сообщение
И в свойствах консоли выбрать шрифт: Lucida Console
Это сделайте. Установка шрифта Lucida Console
1
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:38 12
Цитата Сообщение от angryjack93 Посмотреть сообщение
Ввел вот это:
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
Теперь находит нужное слово в файле, но ввод русских букв происходит другими символами (всякими иероглифами).

Добавлено через 1 минуту


На лэптопе с лицензионным ПО, как-то не хочется все стирать и ставить пингвина)) И я знаю о кодировках, просто без понятия был как совместить кодировку файла и программы с консолью. Пробовал сам, но, увы, не получилось.
Стирать ничего не нужно я сам когда то плотно сидел на windows. Можно просто отщипнуть себе кусочик с диска достаточно 10 гб, поставьте себе для начала Mint с официального сайта ну а дальше постепенно поймете что к чему! И не стразу , позже но гарантированно вы будете пользоваться Windows крайне редко и в основном для игр!
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 12:50 13
Цитата Сообщение от stawerfar Посмотреть сообщение
Я вам еще раз говорю измените кодировку файла на UTF-8
Не нужно ничего менять, и так будет работать.
0
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 13:31  [ТС] 14
Уже сам поставил шрифт, но все равно спасибо)

Добавлено через 2 минуты
Цитата Сообщение от stawerfar Посмотреть сообщение
Стирать ничего не нужно я сам когда то плотно сидел на windows. Можно просто отщипнуть себе кусочик с диска достаточно 10 гб, поставьте себе для начала Mint с официального сайта ну а дальше постепенно поймете что к чему! И не стразу , позже но гарантированно вы будете пользоваться Windows крайне редко и в основном для игр!
Хм, а не подскажете, как это вообще сделать??? Инструкция какая-нибудь там или как? (не хочу случайно что-нибудь запороть, чтоб неделю разгребать за собой же)))
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 13:49 15
Цитата Сообщение от angryjack93 Посмотреть сообщение
Уже сам поставил шрифт, но все равно спасибо)
Теперь код работает?
0
7 / 3 / 2
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 13:50  [ТС] 16
Цитата Сообщение от alsav22 Посмотреть сообщение
Теперь код работает?
Да, теперь все в порядке)
0
alsav22
18.07.2013, 13:51
  #17

Не по теме:

Цитата Сообщение от angryjack93 Посмотреть сообщение
Да, теперь все в порядке)
Что и следовало доказать. А то: кодировка файла, кодировка файла...

0
150 / 64 / 8
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 13:58 18
Цитата Сообщение от angryjack93 Посмотреть сообщение
Уже сам поставил шрифт, но все равно спасибо)

Добавлено через 2 минуты


Хм, а не подскажете, как это вообще сделать??? Инструкция какая-нибудь там или как? (не хочу случайно что-нибудь запороть, чтоб неделю разгребать за собой же)))
Тут Mint и но маны на английском!
Тут Ubuntu все на русском

Добавлено через 2 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:


Что и следовало доказать. А то: кодировка файла, кодировка файла...

Видно что Ваша репутация не по знаниям. Проблемы была в кодировке а вот путей решений много! Знающие люди меня поддержат!
1
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 14:27 19
Цитата Сообщение от stawerfar Посмотреть сообщение
Проблемы была в кодировке
Конечно в кодировке, только не файла, а консоли.


Не по теме:

Цитата Сообщение от stawerfar Посмотреть сообщение
Видно что Ваша репутация не по знаниям.
А вы мне минус поставьте...

0
Kastaneda
18.07.2013, 14:33     Русский и строки
  #20

Не по теме:

Цитата Сообщение от stawerfar Посмотреть сообщение
сам когда то плотно сидел на windows.
Друзья на вечеринке предложили попробовать, сказали от одного раза ничего не будет. Мне сначала даже не понравилось, но потом я попробовал еще раз, а потом еще... Со временем мне это начало нравиться и я начал использовать window периодически, от случая к случаю. У меня не было никакой зависимости и я был уверен, что смогу бросить когда захочу. Я даже не заметил, как начал читать лицензионные соглашения, устанавливать антивирусники, а однажды я даже заплатил за софт... После этого меня понесло и я не заметил как скатился на самое дно (купил windows 7 за деньги, полученные от продажи украденной вещи). Дело кончилось клиникой, большим счетом за лечение и обещанием себе больше никогда так не делать. Теперь я использую Linux, чего и всем советую!

Не по теме:

что-то я переработал похоже, наверное домой пора :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2013, 14:33

Отделить строки знаком равно (англо-русский словарь)
Есть файл, в котором много строк такого вида: нужно написать регулярку для preg_replace,...

Русский текст при вставке строки в базу Oracle
У меня следующий вопрос: При вставке строки в БД Oracle, например: ...

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой...

Русский ввод и русский вывод
Я знаю, что для того, чтобы был виден русский язык, я использую команду ...

Русский или не русский
Продолжая с многоязыковастью на сайте у себя разбиратся.... Возник такой вопрос... Обязательно ли...

Русский и не русский языки
Коллеги нужна ваш помощь... Есть сайтик... На нем два языка -русский и не русский......


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru