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

Создание нормальной кодировки - C++

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
04.07.2011, 14:22     Создание нормальной кодировки #1
Сейчас изучаю тему строк и написал вот такую легкую программу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
int main ( )
{setlocale(LC_ALL,"Rus");
  string s1;
  getline(cin,s1);
  int n=0;
 
  n = s1.find ( "б" );
  
  cout << "Буква б найдена: " << n << endl;
 
 
  cin.get();
  cin.get();
  return 0;
}

Но она наотрез у меня отказывается работать. Выводится значение не соответсвующее дествительности. Я долго думал почему так и догадался вывести
C++
1
s1
на экран

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
int main ( )
{setlocale(LC_ALL,"Rus");
  string s1;
  getline(cin,s1);
  int n=0;
 
  n = s1.find ( "б" );
  cout<<s1;
  cout << "Буква б найдена: " << n << endl;
 
 
  cin.get();
  cin.get();
  return 0;
}
оказалось, что эта страка содержит кракозябли, то есть проблема в русской кодировке. Как мне это исправить ? Как сделать чтобы программа видела вводимые русские символы ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2011, 14:22     Создание нормальной кодировки
Посмотрите здесь:

C++ Кодировки в С++
Отображение символа в нормальной кодировки C++
C++ Как CString преобразовать к нормальной строке?
C++ Кодировки
C++ Ошибка кодировки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
04.07.2011, 15:14     Создание нормальной кодировки #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
///////////////////////////////////////////////////////////
int main ( )
{setlocale(LC_ALL,"Rus");
  string s1;
  SetConsoleCP(1251);
  getline(cin,s1);
  SetConsoleCP(866);
  int n=0;
 
  n = s1.find ( "б" );
  cout<<s1;
  cout << "Буква б найдена: " << n << endl;
 
 
  cin.get();
  cin.get();
  return 0;
}
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
04.07.2011, 15:26  [ТС]     Создание нормальной кодировки #3
Спасибо огромное ! Вы не подскажите что это за конструкции ?
C++
1
2
SetConsoleCP(1251);
SetConsoleCP(866);
и что в них за значения ?
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
04.07.2011, 15:32     Создание нормальной кодировки #4
кодировка ввода вывода )

Добавлено через 1 минуту
866 это дос, 1251 - вин, вроде так )
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
04.07.2011, 16:20  [ТС]     Создание нормальной кодировки #5
Спасибо. Тему можно закрыть.
Yandex
Объявления
04.07.2011, 16:20     Создание нормальной кодировки
Ответ Создать тему
Опции темы

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