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

Абракадабровый C++ - C++

Восстановить пароль Регистрация
 
Synapsehome
0 / 0 / 0
Регистрация: 27.05.2011
Сообщений: 5
27.05.2011, 16:39     Абракадабровый C++ #1
Вся проблема в чём - при вводе на русском я пишу какой-то абракадброй вроде иероглифов. Следствие установило, что эта хрень начинается после цикла do. Вот сам код, чистый консольный проект вин32:
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
#include <iostream>
#include <conio.h>
using namespace std;
enum itsaWord { NO, YES };
int main()
{
  setlocale(0,"");
  itsaWord isWord=NO;
  char ch='a';
  int wordcount=0;
  cout << "Введите предложение: \n";
  do {
 ch = getche();
 if( ch==' ' || ch=='\r' )
 {
   if( isWord==YES )
   {
     wordcount++;
     isWord=NO;
   }
 }
 else
 if( isWord==NO )
    isWord=YES;
    } while( ch !='\r ' );
  cout << "\n---Число слов: " << wordcount << "---\n";
  return 0;
}
Ваши предположения?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
27.05.2011, 16:46     Абракадабровый C++ #2
Цитата Сообщение от Synapsehome Посмотреть сообщение
setlocale(0,"");
setlocale ( LC_ALL, "Russian" );
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
27.05.2011, 16:49     Абракадабровый C++ #3
C++
1
2
3
SetConsoleCP(1251);//временно меняем кодировку ввода
ch = getche();
SetConsoleCP(866);//меняем кодировку ввода назад
попробуй так )
и еще #include <windows.h> для SetConsoleCP
skitafter
Сообщений: n/a
27.05.2011, 18:23     Абракадабровый C++ #4
Аналогичная проблема. Использую visual studio 2008. И необязательно это возникает после использования цикла do, а вообще всегда когда использую getche(). Ввод с cin нормальный, а с getche() абракадабра. Пробовал setlocale(0,""); , setlocale ( LC_ALL, "Russian" ); , setlocale ( LC_ALL, "" ) , переустанавливал windows и несколько раз студию, пробовал другие IDE , проблема не решалась. Причём раньше такой проблемы не было, возникла внезапно. Спасибо m1Rr0r , помог его способ.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,214
Завершенные тесты: 1
27.05.2011, 19:31     Абракадабровый C++ #5
Цитата Сообщение от skitafter Посмотреть сообщение
а с getche() абракадабра
кстати, о getche():
Syntax

#include <conio.h>
int getche(void);

Description

Gets character from the keyboard, echoes to screen.
getche reads a single character from the keyboard and echoes it to the current text window using direct video or BIOS.

Note: Do not use this function for Win32s or Win32 GUI applications.

Return Value

getche returns the character read from the keyboard.
-Svarog-
5 / 5 / 0
Регистрация: 27.11.2014
Сообщений: 12
27.11.2014, 16:25     Абракадабровый C++ #6
гугл перевод #include <conio.h>
INT getche (недействительными???);
описание
Получает символ с клавиатуры, перекликается с экрана.
getche читает один символ с клавиатуры и эхо его к текущему текстовом окне с использованием прямого видео или BIOS.

Примечание: Не используйте эту функцию для Win32s или Win32 GUI приложений.
Возвращаемое значение
getche возвращает символ с клавиатуры.
SeeT
 Аватар для SeeT
53 / 23 / 2
Регистрация: 12.10.2012
Сообщений: 132
Записей в блоге: 1
27.11.2014, 16:38     Абракадабровый C++ #7
Мне всегда помогает сменить кодировку файла с UTF-8 на ANSI через блокнот) Попробуй, мб поможет
Yandex
Объявления
27.11.2014, 16:38     Абракадабровый C++
Ответ Создать тему
Опции темы

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