Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Русские буквы в консоле, как сделать ? 
V
    Опции темы
AndrRus
Дата 1.5.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 14.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Для отображения русского шрифта в консоли предпочитаю использовать следующее:
Код

#include <locale.h>

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


PM MAIL ICQ   Вверх
Igor_K
Дата 11.2.2008, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



А вы можете подсказать где меняется кодировка редактора в Билдере 6? 
PM MAIL   Вверх
bsa
Дата 11.2.2008, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Igor_K @ 11.2.2008,  21:44)
А вы можете подсказать где меняется кодировка редактора в Билдере 6?

Вообще-то ты не по адресу.
В настройках редактора поменяй шрифт Courier New на Courier New Cyr
PM   Вверх
Igor_K
Дата 11.2.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 4.2.2008
Где: Kyiv

Репутация: нет
Всего: нет



Цитата(bsa @ 11.2.2008,  22:16)
Цитата(Igor_K @ 11.2.2008,  21:44)
А вы можете подсказать где меняется кодировка редактора в Билдере 6?

Вообще-то ты не по адресу.
В настройках редактора поменяй шрифт Courier New на Courier New Cyr

Спасибо!

А почему не по адресу? Тут же писалось много постов, что нужно сменить кодировку редактора. только от не написали как) А я то ламер не знаю как это делается. smile 
PM MAIL   Вверх
Djinn
Дата 12.2.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



 setlocale - на ура работает smile просто надо проект в юникоде делать smile и будет Вам щастье smile
PM MAIL   Вверх
bsa
Дата 12.2.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Igor_K @ 11.2.2008,  22:20)
А почему не по адресу? Тут же писалось много постов, что нужно сменить кодировку редактора. только от не написали как) А я то ламер не знаю как это делается. smile

Здесь речь идет о кирилице в выводимом тексте программы, а не о настройках редактора конкретной среды программирования.

Это сообщение отредактировал(а) bsa - 12.3.2008, 21:59
PM   Вверх
aleknek
Дата 2.3.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



Написал простенькую программу, которая запрашивает имя пользователя и фамилию, а затем выводит отдельной строкой. Так вот подключил локаль, как обычно делаю, для отображения русского текста, при наборе  все нормально, проблем никаких, а вот при выводе получается абракадабра всякая, уже заходил в настройки проекта поменял Use Unicode Character Set на  Character Non Set, толку никакого, затем подключил ф-ю ChаrToOem, толку тоже мало, пробывал также с помощью ф-и RusOut, (кто то ранее ее выкладывал) - результат ноль. Подскажите, пожалуйста, как быть, а то уже почти все перепробывал и бестолку ???  Все это пишется в среде Microsoft Visual Studio 2005 smile  
Код

// S_203_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "conio.h"
#include <string>
#include "windows.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_CTYPE,".1251");
    setlocale (LC_MONETARY,".1251");

    char first_name [20];
    char last_name[20];
    char fio [40];
    char dest[100];
    cout << "Ваше имя: ";
    cin.getline(first_name, 20);
    cout << "Ваша фамилия: ";
    cin.getline(last_name, 20);
    strcpy (fio, first_name);
    strcat (fio, ", ");
    strcat (fio, last_name);
    CharToOem(fio, dest);
    cout << "Ваша фамилия и имя: " << dest;
    getch();
    return 0;
}




Это сообщение отредактировал(а) aleknek - 2.3.2008, 14:30
PM MAIL   Вверх
nerezus
Дата 2.3.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

Здесь речь идет о кирилице в выводимом тексте программы, а не о настройках редактора конкретной среды программирования.
 Ну так 2 варианта: либо конвертировать выходную информацию, либо получать конвертированную на входе. Настройка редактора - это второй способ.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
aleknek
Дата 2.3.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



Цитата(nerezus @  2.3.2008,  15:01 Найти цитируемый пост)
Ну так 2 варианта: либо конвертировать выходную информацию, либо получать конвертированную на входе.


Попробовал только что убрать CharToOem, а включить в программу функцию, выкладываемую раннее Redstuff,  результат тот же, хотя данная функция насколько я понимаю, как раз и занимается конвертированием, выходного текста. ??? 

Код

// S_203_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "conio.h"
#include <string>
#include "windows.h"
using namespace std;

string ConvertCodepage(const char *fio);


int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_CTYPE,".1251");
    setlocale (LC_MONETARY,".1251");

    char result [40];
    char first_name [20];
    char last_name[20];
    char fio [40];

    cout << "Ваше имя: ";
    cin.getline(first_name, 20);
    cout << "Ваша фамилия: ";
    cin.getline(last_name, 20);
    strcpy (fio, first_name);
    strcat (fio, ", ");
    strcat (fio, last_name);
    ConvertCodepage(fio);
    cout << "Ваша фамилия и имя: " << result;
    getch();
    return 0;
}

string ConvertCodepage(const char *fio)
{
char *buffer=new char[strlen(fio)+1];
if (NULL == buffer)
return "";
AnsiToOem(fio,buffer);
string result(buffer);
delete[] buffer;
return result;
}


Это сообщение отредактировал(а) aleknek - 2.3.2008, 17:48
PM MAIL   Вверх
Ln78
Дата 3.3.2008, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: 13
Всего: 15



aleknek, направление конвертирования перепутано. В первом примере заменить
Код

//   CharToOem(fio, dest);
   OemToChar(fio, dest);

и будет работать
PM MAIL   Вверх
criz
Дата 12.3.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



Товарищи, а как в качестве параметра функции передать массив из русских букв?
PM MAIL WWW   Вверх
bsa
Дата 12.3.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(criz @ 12.3.2008,  21:49)
Товарищи, а как в качестве параметра функции передать массив из русских букв?

так же, как и английских.
PM   Вверх
criz
Дата 12.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



К сожалению не получается. Например, я не могу открыть файл, если указываю имя на русском =(
Среда: VC++ 6.0
PM MAIL WWW   Вверх
bsa
Дата 12.3.2008, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(criz @ 12.3.2008,  22:07)
К сожалению не получается. Например, я не могу открыть файл, если указываю имя на русском =(
Среда: VC++ 6.0

http://forum.vingrad.ru/forum/topic-189083.html
PM   Вверх
criz
Дата 13.3.2008, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 13.2.2008

Репутация: нет
Всего: нет



bsa, спасибо! Будем пробовать smile
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.