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

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

Войти
Регистрация
Восстановить пароль
 
delexa
2 / 2 / 1
Регистрация: 02.03.2011
Сообщений: 134
#1

Русский язык и тип string - C++

13.02.2013, 23:28. Просмотров 846. Ответов 8
Метки нет (Все метки)

C++
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
30
31
#include "stdafx.h"
#include <iostream>
#include <string>
 
 
using namespace std;
 
int main ()
{  
    setlocale (0,"rus");
   
   string s, s2("дом") ;
 
   cout<<"ВВедите строку: \n";
   getline(cin, s);
  
   int k=s.find(s2);
   int n=0;
   while (k>=0)
   {
   n++;
   k=s.find(s2,k+s2.size());
   }
       
   cout<<n<<endl;   
   
    system("pause");
 
    return 0;
 
}
В чем ошибка? нужно как то правильно подключить русский язык, потому что если дом заменить, например на 123, то все находит
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 23:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русский язык и тип string (C++):

String и русский язык - C++
Доброго времени суток! Мой вопрос скорее всего задавался, но всё же как с клавиатуры ввести в string строку на русском, а затем вывести...

Как в string использовать русский язык? - C++
как в string использовать русский язык, setlocale не помогает ...

getline, string, запись в файл, русский язык - C++
#include &lt;iostream&gt; using std::ios; using std::cin; using std::cout; using std::endl; #include &lt;string&gt; using std::string; ...

Русский язык - C++
char szNonColorEmbeddedMsg; int iNonColorEmbeddedMsgLen = 0; for (size_t pos = 0; pos &lt; strlen(szMsg) &amp;&amp; szMsg != '\0'; pos++) ...

Русский язык в C++ - C++
Как в C++ консоли подключить русский язык желательной setLoceta(Rus) такой функцией, у меня не получилось её использваоть

Русский Язык!!! - C++
Как в переменную char A; занести Ф только чтоб после отоброжалось не каракули а Ф! и библиотеку!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
13.02.2013, 23:29 #2
Кодировку сменить и шрифт в консоли...
0
palva
2614 / 1836 / 263
Регистрация: 08.06.2007
Сообщений: 6,995
Записей в блоге: 4
13.02.2013, 23:37 #3
А кто сказал, что здесь ошибка? Компьютер правильно выполнил то, что вы приказали. Если вы что-то не понимаете, тогда задайте конкретный вопрос, чтобы было понятно, в каком месте объяснять.
0
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
13.02.2013, 23:38 #4
может проще так?

C++
1
2
3
4
5
6
7
#inlude <clocale>
int main ()
{  
setlocale(LC_ALL,"")
 
return 0;
}
0
delexa
2 / 2 / 1
Регистрация: 02.03.2011
Сообщений: 134
13.02.2013, 23:48  [ТС] #5
palva, мне все понятно. Вопрос, как правильно подключить русский язык, чтобы работала программа. Если вместо "дом" напишу "home", и введу в строку один или несколько таких слов, то программа все ищет, а вот, если на русском, то не работает.
Kins, не работает так
Avazart, сменил на многобайтовую кодировку (был юникод) и шрифт в консоли на Lucida Console (был Consolas). Ничего не изменилось.
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.02.2013, 23:53 #6
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
  ...
}
1
delexa
2 / 2 / 1
Регистрация: 02.03.2011
Сообщений: 134
13.02.2013, 23:57  [ТС] #7
alsav22, так заработало)
Всем спасибо)
0
palva
2614 / 1836 / 263
Регистрация: 08.06.2007
Сообщений: 6,995
Записей в блоге: 4
14.02.2013, 00:09 #8
Цитата Сообщение от delexa Посмотреть сообщение
как правильно подключить русский язык
Как правильно, я и сам не знаю. Для вашего случая по-моему лучше всего будет не использовать setlocale, а перекодировать в программе текстовые константы в кодировку OEM, то есть в ту кодировку, которая используется консолью. Часто программа только выводит русские подсказки, а вводит исключительно числа. Тогда можно setlocale, хотя при этом для вывода и ввода будет использоваться разная кодировка. Иногда меняют свойства консоли - кодировка, шрифт, но это может помешать другим программам, которые выполняются в той же консоли после вашей программы. В учебных программах это бывает крайне редко, хотя кто знает, может быть вас как раз учат писать утилиты для использования в конвейере "|".

Добавлено через 5 минут
Перекодировать в программе - я имею в виду не функцию перекодировки из программы вызвать, а открыть исходный код программы текстовым редактором перекодировать и сохранить.
1
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
14.02.2013, 00:17 #9
Другой вариант

C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
   system("chcp 1251");
 
return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 00:17
Привет! Вот еще темы с ответами:

Русский язык - C++
В общем у меня такая проблема , имеется код , в котором нужно что бы выводились русские буквы (имеется ввиду что без setlocale русские...

Русский язык - C++
Уже задолбался с попыткой заставить выводить считанные русские строки. Имеем. По идее там должна быть функция CharToOem но она коверкает....

русский язык - C++
Помогите пишу задачу,как сделать чтоб всё выводило на русском языке? какая функция? или фрагмент кода? cout&lt;&lt;&quot;Dobavlenie informacii...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.02.2013, 00:17
Ответ Создать тему
Опции темы

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