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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 21:50   #1
Neolit1819
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 51
По умолчанию работа с кирилицой в консоли

Доброго дня уважаемые знатоки. Гугл явно говорит, что данная проблема возникала далеко не только у меня, но в примерах которые я находил решалась задача просто корректного вывода кирилицы в консольном приложение. Из всех вариантов мне приглянулся setlocale(LC_ALL,"Russian");
Но использовав в своей программе обнаружил следующию проблему
Код:
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL,"Russian");
	
char buffer[30];
char *slovar[][2] = {
	"Австралия","Канберра",
	"Австрия","Вена",
            ......................
	"Украина","Киев"
    "",""};
char stolica[20];
int i;
cout << "Эта программа выводит название столицы при вводе страны  \n";
cout << "Введите название страны :  ";
gets(stolica);
for(i=0;*slovar[i][0];i++) {
	if (!strcmp(slovar[i][0],stolica)) {
		cout << slovar[i][1] << "\n";
		break;
	}
}

if(!*slovar[i][0])
	cout << "Столица страны " << stolica << "не найдена =( \n";
	return 0;
}
Вывод кирилицы по средством cout <<, коректен, но ввод отнють, прогон программы дает понять, что вводимые слова воспринимаются как "&^gdf" следовательно и о каком сравнение и речи идти не может. Помогите решить проблемму для данного случая. Благодрю.
Neolit1819 вне форума Ответить с цитированием
Старый 31.03.2011, 22:24   #2
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
Хорошо

У меня была такая-же проблема с кирилицой в консоли. К сожалению, окончательного решения этой проблемы я так и не нашёл. Эта проблема обсуждалась не раз, когда-то и я про это спрашивал. Вот ссылка: http://programmersforum.ru/showthread.php?t=138165. И ещё одна: http://programmersforum.ru/showthread.php?t=138948. И вот дополнительная информация:


Цитата:
#include <iostream>
#include <locale>

int main()
{
std::locale rus("rus_rus.866");

std::wcout.imbue(rus);

std::wcout << L"Привет, мир!!!";

... ... ... ... ... ...

return 0;
}
или это:

Цитата:
#include <locale.h>

int main (int arg, char *args[])
{
setlocale (LC_CTYPE, ".1251");
setlocale (LC_MONETARY, ".1251");
... ... ... ... ... ...

return 0;
}
Цитата:
#include <iostream.h>
#include <conio.h>
#include <locale.h>

using namespace std;

int main (void)
{
setlocale (LC_ALL,"rus");
char letter;
cout << "Введите любую букву и нажмите Enter: ";
cin >> letter;
cout << "Была введена буква " << letter << endl;
getch();
}
Цитата:
#include<iostream>
#include <windows.h>
using namespace std;
char s1[256];
char *rus(char *s2)
{ AnsiToOem(s2,s1);return s1; }
int main(){
char name[20];
cout<<rus("Здравствуйте,как вас зовут?")<<endl;
cout<<rus("Меня зовут ");
cin>>name;
cout<<name<<rus(" - красивое имя!")
Цитата:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(0,"RUS");
FILE *fp=fopen("text.txt","r");
if(fp==NULL)
{
cout<<"Не удалось открыть файл!\n";
return 0;
}
char simv[1000]="";
while(!feof(fp))
{
fgets (simv,70,fp);
cout<<""<<simv;
}
fclose (fp);
return 0;
}


Цитата:
#include <iostream>
using namespace std;

int main()
{
locale().global(locale(""));
for (int i = 1; i <=10; ++i)
{
cout << "Изучение цикла FOR : "<< i << endl;
}
system ("pause");

}
И последняя...


#include <windows.h>
#include <iostream.h>

char bufRus[256];
char *Rus(const char *text)
{
CharToOem(text, bufRus);
return bufRus;
}

int main()
{
cout<<Rus(" Русский ")<<endl;
return 0;
}


Вот сколько разных способов... Широкий ассортимент........
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Старый 31.03.2011, 23:44   #3
Neolit1819
Пользователь
 
Регистрация: 28.03.2011
Сообщений: 51
По умолчанию

ох попробывал реализовать пару методов, это какойто секас, не работает и не понятно почему) легче по английски написать, но все равно спасибо за помощ
Neolit1819 вне форума Ответить с цитированием
Старый 01.04.2011, 13:03   #4
genrix
просто
Форумчанин
 
Аватар для genrix
 
Регистрация: 17.02.2011
Сообщений: 405
По умолчанию

Напишите в чем у вас проблема - постараемся решить)))
Не стоит читать свои переписки двухлетней давности...
genrix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАБОТА С ФАЙЛОМ ЗАДАНЫМ С КОНСОЛИ Ксюха21 Общие вопросы C/C++ 3 21.02.2011 12:13
Работа с текстовым курсором в консоли devl Общие вопросы C/C++ 9 28.02.2010 13:03
C# графика в консоли ACE Valery Помощь студентам 6 19.08.2009 08:48
Работа с ClientSocket и ServerSocket из консоли D_E_N Работа с сетью в Delphi 6 28.07.2009 00:27
Работа с меню в консоли kanja Общие вопросы C/C++ 4 24.11.2008 22:37