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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
#1

Кодировка в консоли(C) - C++

22.12.2011, 08:59. Просмотров 3129. Ответов 20
Метки нет (Все метки)

Здравия
Я к вам с очередной проблемойЧитал сейчас тему русские шрифты в консоли и задался вопросом. Вот вы говорите, говорите про C++, а мне в данный момент нужен CПодскажите, как вылечить кодировку?
0
Миниатюры
Кодировка в консоли(C)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 08:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кодировка в консоли(C) (C++):

Кодировка в консоли - C++
Добрый день , имея некоторый опыт программирования на c# решил так же изучить С++, однако при написании простейшей программ (консольные...

Кодировка символов в консоли - C++
Напомните ещё один способ установки кодовой страницы в консоли для визуал студии, по крайней мере работающий в ней. В нём кодировка...

Неправильная кодировка в консоли - C++
#include "stdafx.h" #include <iostream> using namespace std; const int strsize = 20; int main() struct bop { char...

Кодировка в консоли (на ЕГЭ) - C++
В этом году буду писать экзамен, но дело в том, что в visual studio setlocale(LC_ALL,"Rus"); не приводит ни к чему (знаю, что в самой...

Кодировка ввода вывода консоли под кириллицу и латиницу - C++
Возникла необходимость одновременной работы кириллицы и латиницы в консоле.(ввод-обработка-вывод) setlocale(LC_CTYPE, "rus"); ...

Клавиши F1-F12 в консоли, и работа с мышкой в консоли - C++
Я искал на сайте, но не нашел упоминания о том как обрабатывать и или узнавать где находится курсор мышки (и еще мне надо бы узнать нажатие...

20
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:07 #2
отправлю тебя обратно: Русские шрифты в консоли

а setlocale так вообще стандартная сишная функция
0
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:12  [ТС] #3
Nameless One, не хочет, отображается тоже самое. А visual глаголит В ходе построения произошли ошибки
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Простейший сценарий script.c
#include <stdio.h>  // Вкючаем поддержку функции ввода/вывода
#include <time.h>   // Директива нужна для инициализации функции rand()
#include <stdlib.h> // А это - для поддержки функции rand()
#include <StdAfx.h>
#include <windows.h>
 
// Главная функция. Именно она и запускает при старте сценария.
int main(void)  {
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     // инициализируем генератор случайных чисел
     int Num; time_t t; srand(time(&t));
     // в Num записывается случайное число от 0 до 9
     Num = rand()%10;
     // далее выводим заголовки ответа
     printf("Content-type: text/html\n");
     // запрет кэширования данных браузером
     printf("Pragma: no-cache\n");
     // пустой заголовок
     printf("\n");
     // выводим текст документа - его мы увидим в браузере
     printf("<html><body>");
     printf("<h1>Здравствуйте!</h1>");
     printf("Случайное число в диапазоне 0-9: %d", Num);
     printf("</body></html>");
}
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:16 #4
Цитата Сообщение от Agmassmagist Посмотреть сообщение
А visual глаголит В ходе построения произошли ошибки
это значит, что программа вообще не скомпилировалась, и ты запустил исполняемый файл, полученный после последней удачной компиляции.
А конкретно что она говорит: какие ошибки, в каких строках?

Не по теме:

Кстати, функции time можно просто передать нулевой указатель

0
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:20  [ТС] #5
Nameless One, код без SetConsoleCP(1251) и SetConsoleOutputCP(1251) запускается чудесно
а вот с ними выводит вот такую белиберду

1>e:\система\сервер\cgi-bin\php\php\php.cpp(3): warning C4627: #include <time.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>e:\система\сервер\cgi-bin\php\php\php.cpp(4): warning C4627: #include <stdlib.h>: пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): error C2143: синтаксическая ошибка: отсутствие ";" перед "тип"
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): error C2275: time_t: недопустимое использование этого типа в качестве выражения
1> c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(486): см. объявление "time_t"
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "t"
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): error C2065: t: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): warning C4013: time: нет определения; предполагается "extern" с возвратом типа "int"
1>e:\система\сервер\cgi-bin\php\php\php.cpp(13): error C2065: t: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php\php\php.cpp(15): error C2065: Num: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php\php\php.cpp(25): error C2065: Num: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:23 #6
Agmassmagist, попробуй создать пустой проект (без предкомпилированного заголовка StdAfx.h).
И еще, стандарт c90 не позволяет смешивать декларации и код, т.е. декларации переменных должны располагаться вначале блока
0
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:27  [ТС] #7
Nameless One, в смысле закомментировать этот заголовок? Все равно...

Добавлено через 1 минуту
Я его не сам добавлял, его дабавил visual, а без него ругается
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:29 #8
Agmassmagist, нет, нужно сделать именно то, что я сказал: создать новый проект, в свойствах проекта выбрать "пустой проект". Если там будет галочка "Добавить предкомпилированный заголовок" — убрать ее
0
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:39  [ТС] #9
1>------ Построение начато: проект: php2, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1> php2.cpp
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): error C2143: синтаксическая ошибка: отсутствие ";" перед "тип"
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): error C2275: time_t: недопустимое использование этого типа в качестве выражения
1> c:\program files\microsoft visual studio 10.0\vc\include\crtdefs.h(486): см. объявление "time_t"
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "t"
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): error C2065: t: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): error C2065: t: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): warning C4133: функция: несовместимые типы - из "int *" в "time_t *"
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(13): warning C4244: функция: преобразование "time_t" в "unsigned int", возможна потеря данных
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(15): error C2065: Num: необъявленный идентификатор
1>e:\система\сервер\cgi-bin\php2\php2\php2.cpp(25): error C2065: Num: необъявленный идентификатор
1> Создание кода...
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Добавлено через 2 минуты
чего-то он теперь на все начал ругаться: и на начальный код и на измененный....

Добавлено через 3 минуты
А, нет. Только на новый код ругается
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:43 #10
Agmassmagist, у тебя там синтаксические ошибки, про функции SetConsole* там ничего не сказано.

Цитата Сообщение от Nameless One Посмотреть сообщение
И еще, стандарт c90 не позволяет смешивать декларации и код, т.е. декларации переменных должны располагаться вначале блока
это исправил?
0
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:44  [ТС] #11
Nameless One, создание переменных в самое начало? Да, вот
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>  // Вкючаем поддержку функции ввода/вывода
#include <time.h>   // Директива нужна для инициализации функции rand()
#include <stdlib.h> // А это - для поддержки функции rand()
#include <windows.h>
#include <stdafx.h>
 
 
int main(void)
{
     // инициализируем генератор случайных чисел
     int Num; time_t t; srand(time(&t));
     // в Num записывается случайное число от 0 до 9
     Num = rand()%10;
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     // далее выводим заголовки ответа
     printf("Content-type: text/html\n");
     // запрет кэширования данных браузером
     printf("Pragma: no-cache\n");
     // пустой заголовок
     printf("\n");
     // выводим текст документа - его мы увидим в браузере
     printf("<html><body>");
     printf("<h1>Здравствуйте!</h1>");
     printf("Случайное число в диапазоне 0-9: %d", Num);
     printf("</body></html>");
}
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:48 #12
Убери "#include <stdafx.h>"
C
1
int Num; time_t t; srand(time(&t));
можно заменить на
C
1
2
int Num;
srand(time(NULL));
И да, не вижу, чтобы у тебя главная функция возвращала значение. Или ты пишешь на с99?
1
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 09:51  [ТС] #13
Nameless One, как ни странно, но программа перестала материться на отсутствие #include <stdafx.h>, да она теперь вообще это делать перестала, код скомпилировался, но в выводе есть такая штука

"php2.exe": Загружено: "E:\Система\Сервер\cgi-bin\php2\Debug\php2.exe", Символы загружены.
"php2.exe": Загружено: "C:\Windows\System32\ntdll.dll", Невозможно найти или открыть файл PDB
"php2.exe": Загружено: "C:\Windows\System32\kernel32.dll", Невозможно найти или открыть файл PDB
"php2.exe": Загружено: "C:\Windows\System32\KernelBase.dll", Невозможно найти или открыть файл PDB
"php2.exe": Загружено: "C:\Windows\System32\msvcr100d.dll", Символы загружены.
Программа "[612] php2.exe: Машинный код" завершилась с кодом 0 (0x0).

и символы все все равно - абракадабра
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
22.12.2011, 09:53 #14
Цитата Сообщение от Agmassmagist Посмотреть сообщение
и символы все все равно - абракадабра
вот, уже лучше. А теперь сделай вот это:
// установить вручную шрифт Lucida Console в свойствах окна консоли
// и запомнить это для всех окон с этим именем
1
Agmassmagist
31 / 31 / 2
Регистрация: 20.12.2011
Сообщений: 202
22.12.2011, 10:05  [ТС] #15
Цитата Сообщение от Nameless One Посмотреть сообщение
И да, не вижу, чтобы у тебя главная функция возвращала значение. Или ты пишешь на с99?
я в C полный нуль, просто хочу научится обращаться к серверу (это отдельная тема и "как делать" - я знаю), но не могу из-за кодировки, а все что находится до printf меня мало интересует (устати, убрал
C
1
2
3
4
int Num;
    srand(time(NULL));
     // в Num записывается случайное число от 0 до 9
     Num = rand()%10;
и код не ругается даже на SetConsoleCP(1251), но кодировка не отображается все равно)
0
22.12.2011, 10:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 10:05
Привет! Вот еще темы с ответами:

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

Кодировка - C++
Мне нужно, чтобы консольная программа закрывалась после ввода определённой строки.Так вот на английском всё прекрасно работает при вводе...

Кодировка - C++
Все привет #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; //Прототипы функций void...

Кодировка в C - C++
Есть некая функция, написаная мною POS(аргумент), она делает транслит, т.е. например аргумент= Машина, то она преобразует ее =&gt; Mashina. ...


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

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

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