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

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

Восстановить пароль Регистрация
 
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 00:36     Русский и строки #1
вот есть такой кусок кода, сравнивающий строки:
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++ Русский компилятор
Русский ввод и русский вывод C++
C++ Строки и русский алфавит
русский язык C++
C++ Русский текст
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 02:21     Русский и строки #2
Ввод русский в коде сделан?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
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
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:10     Русский и строки #6
Как я понимаю вы сидите в WIndows! Это проблемы с кодировкой! То есть Вам нужно либо изменить кодировку читаемого файла и указать в программе какую кодировку файла вы читаете! Лучше всего использовать Unicode с кодировкой UTF-8. Ну думаю с перекодировкой файла Вы разберетесь ведь это может сделать даже блокнот, а вот с указанием кодировки читаемого файла Вы найдете ответы здесь
alsav22
5282 / 4801 / 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
 Аватар для 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
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 12:31     Русский и строки #10
Я вам еще раз говорю измените кодировку файла на UTF-8 и далее читайте его вот так
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 12:33     Русский и строки #11
Цитата Сообщение от angryjack93 Посмотреть сообщение
но ввод русских букв происходит другими символами (всякими иероглифами)
Цитата Сообщение от alsav22 Посмотреть сообщение
И в свойствах консоли выбрать шрифт: Lucida Console
Это сделайте. Установка шрифта Lucida Console
stawerfar
 Аватар для 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
5282 / 4801 / 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 крайне редко и в основном для игр!
Хм, а не подскажете, как это вообще сделать??? Инструкция какая-нибудь там или как? (не хочу случайно что-нибудь запороть, чтоб неделю разгребать за собой же)))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2013, 13:49     Русский и строки #15
Цитата Сообщение от angryjack93 Посмотреть сообщение
Уже сам поставил шрифт, но все равно спасибо)
Теперь код работает?
angryjack93
7 / 3 / 1
Регистрация: 04.11.2012
Сообщений: 218
18.07.2013, 13:50  [ТС]     Русский и строки #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Теперь код работает?
Да, теперь все в порядке)
alsav22
18.07.2013, 13:51
  #17

Не по теме:

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

stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
18.07.2013, 13:58     Русский и строки #18
Цитата Сообщение от angryjack93 Посмотреть сообщение
Уже сам поставил шрифт, но все равно спасибо)

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


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

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

Не по теме:


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

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


Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2013, 14:33     Русский и строки
Еще ссылки по теме:

Русский язык C++
русский с++ C++
Русский язык C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
18.07.2013, 14:33     Русский и строки
  #20

Не по теме:

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

Не по теме:

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

Yandex
Объявления
18.07.2013, 14:33     Русский и строки
Ответ Создать тему
Опции темы

Текущее время: 04:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru