Почему моя программа (С++) работает неправильно?

Компьютеры программирование программы C++

#include <iostream>
#include <cstring>
#include <conio.h>
#include <locale>

using namespace std;

int main()
{
setlocale(LC_ALL, "Rus");

char str[130], a, i; int b(0);

cout<<"Введите текст\n";

cin.getline(str,130);

cout<<"Введите символ, который нужно найти\n";

cin>>a;

for (int i=0; str[i]!='\0'; i++)
{
if ((str[i])==a)
{
b++;
}

}

cout<<"Символ "<<a<<" встречается в строке "<<b<<" раз. ";
return 0;
}

Примечание:
Она должна считать количество символов в тексте и выводить: "Символ такой-то встречается в строке такой-то столько-то раз"
Считает-то она правильно, но выводимый программой символ (только если текст был введён на русском языке, с английским всё норм) ОТЛИЧАЕТСЯ от символа, введённого пользователем.


Пример работы программы:
- Введите текст:
- Всё будет хорошо
- Введите символ, который нужно найти:
- о
- Символ R встречается в строке 3 раз.

Примечание:
>> перекодировать ввод в используемую кодировку или изначально работать только с OEM. >>
Как это сделать?
Ответы:
Что бы Вы не делали консоль Windows отправит программе символы в ОЕМ кодировке. Вы не можете это исправить и должны перекодировать ввод в используемую кодировку или изначально работать только с OEM.
>Примечание №2
1. WinAPI функция OemToChar.
2. Заменить "Rus" на ".866" и использовать текстовый редактор поддерживающий DOS кодировку(кодовая страница 866 для русского языка). Notepad++ например.


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.