Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некорректно отображается кириллица в консольном пр 
:(
    Опции темы
Mastodont
Дата 24.12.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть код
Код

// Рис. 2.7: fig02_07.cpp
// Программа вычисления среднего значения. Использует повторение, управляемое счетчиком.
#include<iostream.h>
#include<windows.h>

int rustext(char str[])
{
 CharToOem(str,str);
 cout << str;
}

using std::cout;
using std::cin;
using std::endl;

int main()
{
 int total, // сумма оценок
     gradeCounter, // число введенных оценок
     grade, // одна оценка
     average; // средняя оценка

 // инициализация
 total = 0; // установка суммы в исходное состояние
 gradeCounter = 1; // подготовка к циклу

 // вычисление
 while (gradeCounter <= 10) // цикл (10 итераций)
 {
  rustext("Введите оценку: "); // подсказка на ввод
  cin >> grade; // ввод значения grade
  total = total + grade; // добавление grade к total
  gradeCounter = gradeCounter + 1; // увеличение счетчика
 }

 // завершение
 average = total / 10; // целочисленное деление
 rustext("Средняя оценка равна ");
 cout << average << endl;

 system("pause");
 return 0; // указание на успешное завершение
}

Проблема в том, что первый раз строка "Введите оценку: " выводится нормально, а остальные 9 раз крякозябрами. Для ясности привожу скрин:
user posted image

Это сообщение отредактировал(а) Mastodont - 24.12.2009, 11:39
PM MAIL   Вверх
smoke_man
Дата 24.12.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На форуме не один раз это рассматривалось. Посмотри тут.

Добавлено через 4 минуты и 28 секунд
Попробуй setlocale(LC_ALL,"Russian");

Это сообщение отредактировал(а) smoke_man - 24.12.2009, 12:35


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
mrbrooks
Дата 24.12.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(smoke_man @  24.12.2009,  12:34 Найти цитируемый пост)
Попробуй setlocale(LC_ALL,"Russian");

ни когда не встречал, что бы для дебилдера (6, 2007, 2009) срабатывала setlocale or std::locale.  smile 
PM MAIL   Вверх
smoke_man
Дата 24.12.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да  - ща попробывал и правда не работает.
mrbrooks, спасибо, что поправил. Буду знать на будуще...


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
mrbrooks
Дата 24.12.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



smoke_man, вроде бы мелочь - а все одно - собирать костыль из CharToOem (особенной такой как у TC) - как то не современно  smile 
PM MAIL   Вверх
smoke_man
Дата 24.12.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Mastodont, попробуй так:
Код

#include <string.h>

int rustext(const char * data)
{
 char *out = new char[strlen(data)+1];
 CharToOem(data,out);
 cout << out;
 delete [] out;
}
.....


Добавлено через 38 секунд
mrbrooks, согласен.


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
Mastodont
Дата 24.12.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

собирать костыль из CharToOem (особенной такой как у TC) - как то не современно

А как сделать современно?
PS. Что значит "ТС"?  smile 
Код

int rustext(const char * data)
{
 char *out = new char[strlen(data)+1];
 CharToOem(data,out);
 cout << out;
 delete [] out;
}

Спасибо за вариант решения проблемы, но что то сложновато для меня пока с этими указателями, или что там звездочка обозначает  smile 
PM MAIL   Вверх
smoke_man
Дата 24.12.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По мне так консольные приложения делать в VS. TC - топикстартер. 


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
mrbrooks
Дата 24.12.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Mastodont @  24.12.2009,  14:24 Найти цитируемый пост)
А как сделать современно?

современно - это значит компилятор должен поддерживать общепринятый стандарт. т.е. должна работать работать std::locale или хотя бы setlocale.

Цитата(smoke_man @  24.12.2009,  14:28 Найти цитируемый пост)
По мне так консольные приложения делать в VS.

я давно пришел к выводу, что и не только консольные  smile 
PM MAIL   Вверх
Mastodont
Дата 24.12.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

TC - топикстартер

Понятно  smile 

А как сделать так, чтобы компилятор поддерживал std::locale или setlocale.
PM MAIL   Вверх
mrbrooks
Дата 24.12.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Mastodont @  24.12.2009,  15:09 Найти цитируемый пост)
А как сделать так, чтобы компилятор поддерживал std::locale или setlocale

взять и скачать - на выбор:
1. MS VS EE
2. mingw + eclipse
есть еще - но я бы остановился на первом

Это сообщение отредактировал(а) mrbrooks - 24.12.2009, 15:14
PM MAIL   Вверх
Mastodont
Дата 25.12.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

есть еще - но я бы остановился на первом

То есть на MS VS EE?
PM MAIL   Вверх
mrbrooks
Дата 26.12.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Mastodont @  25.12.2009,  14:20 Найти цитируемый пост)
То есть на MS VS EE? 

точно!
PM MAIL   Вверх
shklowsky
Дата 26.12.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мастодонт, не ведись, тебя манят в АД! smile 
установишь енту експресс едишн, и всё, погиб.
Получишь одни голые сишные рантаймы и половину оставшейся жизни будешь
скачивать всякие СДК и  справочные системы.
А вторую половину отпущенного тебе срока - пытаться это добро установить,
настроить и как- то в нем разобраться. smile  


mrbrooks
как не стыдно сманивать честных формошлепов! smile 
закончит ВУЗ, и забудет про консоль. smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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