Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 25
1

Не работает ввод русского текста в Microsoft Visual C++ 2010 express

05.05.2017, 14:43. Показов 2212. Ответов 4

Здравствуйте!
Не работает ввод русского текста в Microsoft Visual C++ 2010 express.
С выводом разобрался.
Вывод русского текста в прг на С++ работает.
Но ввод русского текста в в Microsoft Visual C++ 2010 express пока осилить не удается.
Нужна помощь продвинутых экспертов.
Вот тестовая программа.
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
32
33
34
#include "stdafx.h"
#include <windows.h>
#include <locale>
#include <iostream>
#include <string.h>
using namespace std;
char s[]="абба - лучшая агруппа - eto tochno!!!";
wchar_t s1[100]; char s2[100];
 
int _tmain(int argc, _TCHAR* argv[])
{ //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    setlocale(LC_ALL,"Russian");    
    //CharToOem((LPCWSTR)s, (LPSTR)s1); 
    //CharToOemA(s, s1);  //also does not work (((
    for(int i=0;i<strlen(s);i++)
     if(s[i]=='а')
         s[i]='б'; 
cout<<"\n"<<s<<"\n";
// s выводится без искажений - нормально
wprintf(_T("\nПривет, мир\n"));
// Привет мир! = выводится нормально
cout<<"\nА теперь введите русский текст = \n";
_getws(s1);
//  тут уже кракозябры в s1
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
// это не помогает
CharToOem(s1, s2);
// в s2 тоже кракозябры
cout<<"\n"<<s2<<"\n";
system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2017, 14:43
Ответы с готовыми решениями:

Не работает CharToOem в Microsoft Visual C++ 2010 express
Здравствуйте! Не работает CharToOem в Microsoft Visual C++ 2010 express. А также все другие...

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010...

Накрылся Microsoft Visual C++ 2010 Express
В процессе выполнения программы завис компьютер, диспетчер задач не помог, пришлось выключать комп....

microsoft visual studio 2010 express
я установил microsoft visual studio 2010 express создаю файл cpp и набираю код не могу его...

4
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
05.05.2017, 14:45 2
Какие эксперты? 11-12 раскомментируй. 13 убери. И шрифт Lucida сделай.
0
Форумчанин
Эксперт CЭксперт С++
8171 / 5021 / 1436
Регистрация: 29.11.2010
Сообщений: 13,453
05.05.2017, 14:54 3
Цитата Сообщение от ivan555666 Посмотреть сообщение
Нужна помощь продвинутых экспертов.

Не по теме:

Жаль, а я уж было хотел помочь(

0
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 25
05.05.2017, 15:56  [ТС] 4
Здравствуйте господа Gluck и nmcf
Рекомендация nmcf помогла. И вы на самом деле оба = эксперты.
Русский язык работает и на ввод и на вывод.
Но.... ввод русского текста работает ТОЛЬКО с пом. gets(s1), а ни cin>>s1 ни scanf("%s",s1) не работают.
То есть работают, но ввод происходит только до первого пробела.
Как эту нелепицу устранить - можете помочь? Мне нужен именно формтированный ввод руских текстов в перемешку с цифрами и переменными типа double. хорошо подошла бы scanf() если бы не эта глупость с вводом только до первого пробела. Можно ли это как-то устранить?
0
Форумчанин
Эксперт CЭксперт С++
8171 / 5021 / 1436
Регистрация: 29.11.2010
Сообщений: 13,453
05.05.2017, 16:00 5
Лучший ответ Сообщение было отмечено ivan555666 как решение

Решение

Цитата Сообщение от ivan555666 Посмотреть сообщение
только до первого пробела
Для считывания строк std::string использует функцию std::getline, для считывания строк в массив char используют метод cin.getline();

Добавлено через 1 минуту
C++
1
2
3
4
5
6
#include <iostream>
#include <string>
 
std::string line;
std::getline(std::cin, line);
std::cout << "Line: " << line;
Добавлено через 56 секунд
Либо
C++
1
2
3
4
5
#include <iostream>
 
char buf[256];
std::cin.getline(buf, sizeof(buf));
std::cout << "Line: " << buf;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2017, 16:00

Microsoft Visual C++ 2010 Express - не подсвечиваются ошибки
Здравствуйте! Проблема состоит в том, что программа не хочет подсвечивать ошибки. После...

Регистрация Microsoft Visual Studio 2010 Express
Нужно ли регестрировать Microsoft Visual Studio 2010 Express!!! Потому что я поставил и она...

Microsoft visual express 2010. Скомплилированный заголовок
Здравствуйте, товарищи =) Недавно стал изучать C++ по книге Прата С. Сейчас столкнулся с некоторым...

Microsoft Visual C++ 2010 Express - не показывает ошибки
Здравствуйте! Создал кнопку и на неё поставил такой код: textBox1.Text = &quot;123&quot;; Который...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru