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

Кодировки в С++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
02.06.2011, 23:56     Кодировки в С++ #1
Подскажите... Пытаюсь разобраться с кодировками в С++ на простом примере...Как заставить С++ принимать русские слова и при вводе и при выводе?
Код
#include "stdafx.h"
#include <windows.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
///SetConsoleCP(1251);
 ////SetConsoleOutputCP(1251);///Работают, но лишь при смене шрифтом на Люсиду Консоль
setlocale( LC_ALL,"Russian" );
cout<<"Здравствуйте\n\n\n"<<setw(3);

char a[10];

cin>>a;
cout<<"Здравствуйте, "<<a<<", Доброго дня Вам"<<setw(3);

	  _getch();
	return 0;
}
СЭТЛОКЕЙЛ русифицирует только приветствие первое, а не переменную "а"...
Пробовал вставить
CharToOem((LPCWSTR)a,a);
в сочетании с сетлокейлом результата не дает, без него русифицирует исключительно переменную "а"...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2011, 23:56     Кодировки в С++
Посмотрите здесь:

C++ Нет кодировки?!
C++ Перевод кодировки
C++ Кодировки
Изменение кодировки текста C++
C++ Ошибка кодировки?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Soroka_D
0 / 0 / 0
Регистрация: 03.05.2011
Сообщений: 10
03.06.2011, 00:16     Кодировки в С++ #2
не уверен, что есть способ без переключения шрифтов на Люсиду.
Можно так, но все равно надо переключать шрифт
C++
1
system ("chcp 1251");
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
03.06.2011, 00:20  [ТС]     Кодировки в С++ #3
Да без переключения еще пара способов работают. просто хочется сделать нечто что не потребует от пользователя загадочных для него действий типа переключения шрифтов
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
03.06.2011, 00:38     Кодировки в С++ #4
C++
1
2
3
4
setlocale( LC_ALL,"Russian" );
SetConsoleCP(1251);//временно меняем кодировку ввода
cin.getline(srcStr,255);//забираем строку в правильной кодировке
SetConsoleCP(866);//меняем кодировку ввода назад
попробуй так...так будет по идее правильно забираться рус текст и выводиться тоже,
но деготь в том что каждый раз при вводе строки придется шаманить со сменой кодировки
Styks
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 16
03.06.2011, 00:53  [ТС]     Кодировки в С++ #5
Цитата Сообщение от m1Rr0r Посмотреть сообщение
C++
1
2
3
4
setlocale( LC_ALL,"Russian" );
SetConsoleCP(1251);//временно меняем кодировку ввода
cin.getline(srcStr,255);//забираем строку в правильной кодировке
SetConsoleCP(866);//меняем кодировку ввода назад
попробуй так...так будет по идее правильно забираться рус текст и выводиться тоже,
но деготь в том что каждый раз при вводе строки придется шаманить со сменой кодировки
А что значит
cin.getline(srcStr,255)....?
всмысле в какую переменную то мы записываем результат?..мне нужно в char a, к примеру
переписал как cin.getline(а,255), не работает, квакозябра все равно
Yandex
Объявления
03.06.2011, 00:53     Кодировки в С++
Ответ Создать тему
Опции темы

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