Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2013, 15:07   #1
vete-7557
 
Регистрация: 11.04.2013
Сообщений: 9
По умолчанию Вопрос по работе со строками в консоли

Добрый день. Может ли кто-нибудь подсказать в чем ошибка в простейшей программе представленной ниже.
Код:
#include <iostream>
#include <clocale>
#include <string.h>
using namespace std;
void main()
{ char S[25];//объявление символьной переменной для ввода строки
  setlocale(LC_ALL,"Russia");
  setlocale(LC_ALL,"Rus");//подключение кириллицы
cout<<"Введите слово 'Иван' ";//запрос ввода слова 'Иван'
cin>>S; // с клавиатуры введу 'Иван' и присвою это слово переменной S
if(S[0]=='И')
{setlocale(LC_ALL,".866");//подключение DOC-й кодировки для вывода в консоль результата кириллицей
cout<<S<<endl;}//если первый символ 'И' в слове 'Иван',то вывожу все слово
system("pause");
}
Запускаю программу, в консоль выводится сообщение: "Введите имя 'Иван'". После ввода проверяется первый символ слова 'Иван 'на равенство букве "И" и должно снова вывестись слово 'Иван', но условие не отрабатывается почему то???

Последний раз редактировалось Stilet; 05.08.2013 в 20:31.
vete-7557 вне форума Ответить с цитированием
Старый 05.08.2013, 15:36   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,355
По умолчанию

Скорее всего потому что кириллическая буква 'И' в вашем коде НЕ в кодировке 866.
waleri вне форума Ответить с цитированием
Старый 05.08.2013, 15:57   #3
vete-7557
 
Регистрация: 11.04.2013
Сообщений: 9
По умолчанию

Нет, в программе ложно условие при сравнении символов (if S[0]=='И'). Проверял в пошаговом режиме S[0], данный символ вообще не равен 'И'. так вот вопрос и возникает, как же сделать, чтобы S[0] был равен 'И'.
vete-7557 вне форума Ответить с цитированием
Старый 08.08.2013, 10:28   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Будет выведено только char*
Попытка сравнить char с кодом символа 'И' обернется неудачей, т.к 'И', как уже сказали, не в той кодировке, видимо.
Igor95 вне форума Ответить с цитированием
Старый 08.08.2013, 14:59   #5
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Может сейчас глупость скажу, но можно использовать wchar_t заместо char. UNICODE поддерживает же русские символы.

Соответственно cout - wcout, cin - wcin
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели при работе со строками citruswa Общие вопросы C/C++ 3 03.03.2012 15:21
Ошибка при работе с строками в Си papos Помощь студентам 1 23.03.2011 03:50
Вопрос по работе со строками. Кнехт Общие вопросы .NET 7 25.11.2010 17:09
Ошибка в работе со строками, язык С ПеПпИ Помощь студентам 1 18.11.2010 01:24
Цикл do while при работе со строками. Lazio Помощь студентам 7 11.10.2009 16:11