Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
apeorin
#1

Функция gets() возвращает текст в неправильной кодировке - C++

22.10.2012, 15:52. Просмотров 852. Ответов 7
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста, что с этим можно сделать...
Здесь, текст который будет введен в строке "Введите строку: " должен быть выведен в графе "Вот введенная Вами строка: ". Вот исходник:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
        char sample[40];
cout << "Введите строку: ";
    gets(sample);
cout << "Вот введенная Вами строка: " << sample;
getch();
return 0;
}
Так вот, при запуске этой программы, в графе "Вот введенная Вами строка: " выводятся иероглифы, вместо русского текста, а вот с английским все в порядке.

SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Не решают данную проблему.
А переключение шрифта на Lucida Console не подходит. Есть ли еще какие то способы решения этой траблы?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2012, 15:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция gets() возвращает текст в неправильной кодировке (C++):

Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк - C++
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк.

В какой кодировке getch() возвращает символ? - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;conio.h&gt; int main() { SetConsoleOutputCP(1251); char ch; do ...

Текст в кодировке cp1251 перевести в utf8 и обратно? - C++
Здорова! Вот есть код: #include &lt;iostream&gt; using std::cout; using std::endl; using std::cerr; using std::cin; #include...

Как прочитать текст из окна EDIT в другой кодировке? - C++
Никак не выходит у меня sha1 как должно быть. Ни с одним онлайн сервисом не совпадает. Видимо читать в char и wchar_t не достаточно... ...

Преобразовать текст из *.txt (в любой кодировке) в картинку формата *.bmp - C++
Привет) Нужна помощь с написанием программы..нужна информация) Задание: Написать программу, которая преобразует текст из *.txt (в...

Функция возвращает массив - C++
Как сделать чтобы функция возвращала массив(не исползуя указатели):(. К присмеру: ... char v; // //заполнение массива // ...

7
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
22.10.2012, 17:03 #2
Недавно уже говорил, поэтому повторюсь:
При использовании строковых литералов состоящих из элементов типа char(1 байт) и содержащих кириллицу:
1) следите за тем, чтобы исходный файл в котором используются эти константы не был сохранён в юникоде;
2) следите за тем чтобы кодировка файлов, в которых используются строковые литералы, и кодировка консоли совпадали.
0
coloc
погромист
411 / 247 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
22.10.2012, 21:18 #3
Подойдет?
C++
1
setlocale(LC_CTYPE, "");
0
romae777
1 / 1 / 0
Регистрация: 14.03.2010
Сообщений: 9
22.10.2012, 22:37 #4
надо вставить
#include <Windows.h>
потом
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и в сплывающем консольном окне свойства меняем язык" Lucida Console"
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
22.10.2012, 22:41 #5
Цитата Сообщение от rangerx Посмотреть сообщение
следите за тем, чтобы исходный файл в котором используются эти константы не был сохранён в юникоде
То есть вы считаете, что в исходниках не должно быть ничего кроме ANSI? Это правильно.
0
maxprig
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 21
22.10.2012, 22:59 #6
Попробуйте так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
        char sample[40];
cout << "Введите строку: ";
    gets(sample);
cout << "Вот введенная Вами строка: " << sample;
getch();
return 0;
}
0
apeorin
23.10.2012, 08:49 #7
Цитата Сообщение от coloc Посмотреть сообщение
Подойдет?
C++
1
setlocale(LC_CTYPE, "");
Так же, иероглифы...

Добавлено через 2 минуты
Цитата Сообщение от maxprig Посмотреть сообщение
Попробуйте так
Код
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "");
        char sample[40];
cout << "Введите строку: ";
    gets(sample);
cout << "Вот введенная Вами строка: " << sample;
getch();
return 0;
}
Иероглифы вместо русского
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.10.2012, 18:19 #8
Цитата Сообщение от apeorin Посмотреть сообщение
Так же, иероглифы...
вы вообще читаете, что вам пишут? постами выше вам написали ответ
надо вставить
#include <Windows.h>
потом
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
и в сплывающем консольном окне свойства меняем язык" Lucida Console"

у вас ввод в одной кодировке, а выводите в другой, вот и крокозябры
0
23.10.2012, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 18:19
Привет! Вот еще темы с ответами:

Функция возвращает объект - C++
Доброго времени суток! Как сделать, чтобы функция возвращала объект, ну или указатель на объект. Использую так: Image-&gt;Picture...

Функция get() не возвращает значение - C++
Есть класс, в котором определен объект типа SDL_Surface*. Пытаюсь передать его в сторонний класс с помощью метода getScreen(), но он по...

Функция возвращает auto - C++
В настройках ставлю галочку Have g++ follow the C++11 ISO C++ language standard Но все равно не компилится. template&lt;typename...

Функция не возвращает результат=( - C++
Добрый вечер. у меня такая проблема. мне нужно перегрузить функцию для моего класса: numb numb::operator +(const numb &amp;p)const { ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru