Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
#1

Русский и строки - C++

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

вот есть такой кусок кода, сравнивающий строки:
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);
    }
Если символ ввести или английские буквы, то совпадения в строке находит, а вот с русскими буквами или словами проблема. Тупо проходит, хотя в файле совпадения есть. Как исправить???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 00:36     Русский и строки
Посмотрите здесь:

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

русский с++ - C++
когда то слышал про такую задумку. не дадите наводку. под русским я подразумеваю полный перевод операторов и основных функций

русский - C++
вывожу текст через командную, но setlocale(LC_ALL, &quot;Russian&quot;) не помогает, хоть и на русском, но не то, что надо(а на консоли все ок) ...

Русский в консольке - C++
день добрый, пишу в ХЕ7, и значица вопрос стал такой: Стандартная строка setlocale(LC_ALL,&quot;Russian&quot;); не работает так как должна.. вместо...

Русский символы в C++ - C++
ОС Ubuntu 12.04.Компилятор g++.Редактор vim. Код программы: #include &lt;iostream&gt; int main() { using namespace...

Русский файл)) - C++
Доброго времени суток! Подскажите пожалуйста, есть файл с русскими словами, я забираю русское слово с помощью cin.getline(), потом с...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 02:21     Русский и строки #2
Ввод русский в коде сделан?
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
18.07.2013, 04:04     Русский и строки #3
Проще используйте функцию strcmp. Она сравнивает 2 строки.
C++
1
strcmp(str1,str2)
Если ответ 0 то строки равны.
Если ответ отрицателен то str2 больше str1.
Если ответ положителен str1 больше str2.
alsav22
18.07.2013, 06:56
  #4

Не по теме:

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

angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 12:08  [ТС]     Русский и строки #5
Да, под С что-то делать не хочется...
У меня в файле русские слова и ввожу в консоли русские слова, но они друг с другом не совпадают (хотя по сути одинаковы)
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:10     Русский и строки #6
Как я понимаю вы сидите в WIndows! Это проблемы с кодировкой! То есть Вам нужно либо изменить кодировку читаемого файла и указать в программе какую кодировку файла вы читаете! Лучше всего использовать Unicode с кодировкой UTF-8. Ну думаю с перекодировкой файла Вы разберетесь ведь это может сделать даже блокнот, а вот с указанием кодировки читаемого файла Вы найдете ответы здесь
alsav22
5416 / 4812 / 442
Регистрация: 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 Посмотреть сообщение
То есть Вам нужно либо изменить кодировку читаемого файла
Кодировка файла тут ни при чём, тогда бы и английский текст не определялся бы.
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:27     Русский и строки #8
Вы явно ничего ни знаете об кодировках! Раз говорите такую ерунду в байтовой кодировке windows первые 127 символов зарезевированы под English а остальные под местную локаль! Ну я думаю вам полезно будет почитать что такое кодировка, а лучше перейдите на линукс там быстро поймете что к чему!
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 12:30  [ТС]     Русский и строки #9
Ввел вот это:
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
Теперь находит нужное слово в файле, но ввод русских букв происходит другими символами (всякими иероглифами).

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

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


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

Добавлено через 2 минуты
Цитата Сообщение от stawerfar Посмотреть сообщение
Стирать ничего не нужно я сам когда то плотно сидел на windows. Можно просто отщипнуть себе кусочик с диска достаточно 10 гб, поставьте себе для начала Mint с официального сайта ну а дальше постепенно поймете что к чему! И не стразу , позже но гарантированно вы будете пользоваться Windows крайне редко и в основном для игр!
Хм, а не подскажете, как это вообще сделать??? Инструкция какая-нибудь там или как? (не хочу случайно что-нибудь запороть, чтоб неделю разгребать за собой же)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2013, 13:49     Русский и строки
Еще ссылки по теме:

Русский компилятор C/С++ - C++
Подскажите компилятор C/C++ созданный в Росси. Ещё не разу невидел такого!:) Спасибо!

Русский в C++ string - C++
Уже научилась подключать русский в C++ но внезапно возникла проблема с выводом считанной строки. Так в программе: #include&quot;stdafx.h&quot; ...

Cin.get + русский - C++
здравствуйте мне нужно считать посимвольно строчку решил использовать cin.get() пример ввод &quot;петя&quot; в проге &quot;ЇҐвп&quot; в...

русский алфавит - C++
//--------------------------------------------------------------------------- #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 13:49     Русский и строки #15
Цитата Сообщение от angryjack93 Посмотреть сообщение
Уже сам поставил шрифт, но все равно спасибо)
Теперь код работает?
Yandex
Объявления
18.07.2013, 13:49     Русский и строки
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru