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

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

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

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

13.02.2013, 23:28. Просмотров 781. Ответов 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, то все находит
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 23:28     Русский язык и тип string
Посмотрите здесь:

C++ Русский Язык!!!
Русский язык в C++ C++
русский язык C++
Русский язык C++
C++ русский язык
String и русский язык C++
C++ getline, string, запись в файл, русский язык
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,945
Записей в блоге: 17
13.02.2013, 23:29     Русский язык и тип string #2
Кодировку сменить и шрифт в консоли...
palva
2460 / 1682 / 216
Регистрация: 08.06.2007
Сообщений: 6,644
Записей в блоге: 4
13.02.2013, 23:37     Русский язык и тип string #3
А кто сказал, что здесь ошибка? Компьютер правильно выполнил то, что вы приказали. Если вы что-то не понимаете, тогда задайте конкретный вопрос, чтобы было понятно, в каком месте объяснять.
Kins
59 / 58 / 6
Регистрация: 03.02.2013
Сообщений: 167
13.02.2013, 23:38     Русский язык и тип string #4
может проще так?

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

Добавлено через 5 минут
Перекодировать в программе - я имею в виду не функцию перекодировки из программы вызвать, а открыть исходный код программы текстовым редактором перекодировать и сохранить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2013, 00:17     Русский язык и тип string
Еще ссылки по теме:

C++ Русский язык
Русский язык C++
C++ Как в string использовать русский язык?
Русский язык C++
Русский язык в Си C++

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

Или воспользуйтесь поиском по форуму:
Avazart
7044 / 5221 / 259
Регистрация: 10.12.2010
Сообщений: 22,945
Записей в блоге: 17
14.02.2013, 00:17     Русский язык и тип string #9
Другой вариант

C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
   system("chcp 1251");
 
return 0;
}
Yandex
Объявления
14.02.2013, 00:17     Русский язык и тип string
Ответ Создать тему
Опции темы

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