Welcome Guest (Log In | Register)


Вернуться   BINDGAME > Общение > Софт\ Железо

Ответ
C++ 
Опции темы Опции просмотра
Старый 18.07.2013   Post #1
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию C++

Привет пасаны и дамы!
Вот решил я значить заняться самообразованием летом и попытаться познать необъятное, а именно язык программирования СиПиПи.
Скачал значить учебник, среду разработки, все дела, но во время запила моей первой программы, а именно "Хеллоу, ворлд" я вдруг осознал, что у меня не получается написать это кириллицей. Ну то есть уаще. На выходе я получаю абракадабры в консоли. Причем от смены среды проблема не исчезает. А теперь под всеобщее улюлюканье хочу получить совета по этому вопросу от знающих людей.
А еще если кто знает толковые учебники по C++ для кипятильников то заделитесь)
Спасибо.
Intaco вне форума   Ответить с цитированием
Старый 18.07.2013   Post #2
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Т.А Павловская - C/C++
Серия "Программирование на языке высокого уровня"
Стоит в районе 400 рублей в хорошем, твердом переплете
Написана неплохо, доступно (насколько это можно сказать про С++)

Насчет абракадабры
компилятор, среда разработки, какие, чем пользовался?
Если писать на латинице 'Hello World!'' - тоже самое?

Последний раз редактировалось Wolverine; 18.07.2013 в 23:43.
Wolverine вне форума   Ответить с цитированием
Старый 18.07.2013   Post #3
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию

Wolverine, среда DevC++
С латиницей все в порядке. Проблема в винде видимо?
Intaco вне форума   Ответить с цитированием
Старый 18.07.2013   Post #4
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Intaco, Если так ввести:

#include <windows.h>
#include <clocale>
#include <stdio.h>

void main(){
setlocale(LC_CTYPE,"Russian");
printf("Пробуем сделать вывод на кириллице - ПРИВЕТ МИР");
Sleep(10000);


Если на этой среде не прокатит этот вариант, можно попробовать так:

#include <windows.h>

char chbuff[] = "Здравствуй мир";
CharToOem(chbuff, chbuff);
printf("%s", chbuff);


Третий вариант:

#include >iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
cout << "Привет мир" << endl;
return 0;
}


Стандартный вывод ''Hello World'', пример которого везде приводится, не предназначен для кириллицы

Последний раз редактировалось Wolverine; 19.07.2013 в 00:11.
Wolverine вне форума   Ответить с цитированием
Старый 19.07.2013   Post #5
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию

Может я что-то не так делаю?(
Нажмите на изображение, чтобы открыть его в исходном размере.

Со вторым вариантом вообще жуть.
3-й компилируется, но окно сразу закрывается после запуска.

Последний раз редактировалось Intaco; 19.07.2013 в 00:17.
Intaco вне форума   Ответить с цитированием
Старый 19.07.2013   Post #6
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Intaco, Вообще удобство CharToOem (второй вариант) в том, что он работает на любой машине. Тут проблема может быть в версии компилятора разве что

А третий вариант?

Сейчас разберемся

Последний раз редактировалось Wolverine; 19.07.2013 в 00:21.
Wolverine вне форума   Ответить с цитированием
Старый 19.07.2013   Post #7
Суров
Аватар для Cyborg
 
Регистрация: 09.07.2013
Сообщений: 1,002
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 25
Репутация: 373
Живет на форуме:
2 нед 2 д 16 ч
По умолчанию

Давай Borland C++, только хардкор!
_________________________

Нажмите на изображение, чтобы открыть его в исходном размере.
Cyborg вне форума   Ответить с цитированием
Старый 19.07.2013   Post #8
лалка
Аватар для Андрей
 
Регистрация: 07.07.2013
Возраст: 30
Сообщений: 115
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 14
Репутация: 102
Живет на форуме:
1 мес 1 нед 5 д
По умолчанию

Я понимаю, что может быть, не совсем по теме, но не могли бы вы написать названия хороших книг по С и C++.
_________________________

Цитата:
Сообщение от Intaco Посмотреть сообщение
Загвоздка у нас в задке
Андрей вне форума   Ответить с цитированием
Старый 19.07.2013   Post #9
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Андрей, 2 пост в теме
Wolverine вне форума   Ответить с цитированием
Старый 19.07.2013   Post #10
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию

Андрей, ты, судя по всему, даже не прочитал тему.

Добавлено через 29 секунд
Cyborg, я пытался, но не вдуплил( А еще он мне сраль на рабочий стол какими-то файлами в сурьезных масштабах.
Intaco вне форума   Ответить с цитированием
Старый 19.07.2013   Post #11
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Intaco, у тебя же Dev++, а не просто консоль
Там вопрос в перекодировке (СР-88 и СР-1251)

ВОТ решение вопроса с кириллицей для Dev++

С этим способом будет сразу осуществляться перекодировка русских символов под нужный формат

Пробуй, отпишись потом

Последний раз редактировалось Wolverine; 19.07.2013 в 00:39.
Wolverine вне форума   Ответить с цитированием
Старый 19.07.2013   Post #12
лалка
Аватар для Андрей
 
Регистрация: 07.07.2013
Возраст: 30
Сообщений: 115
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 14
Репутация: 102
Живет на форуме:
1 мес 1 нед 5 д
По умолчанию

Wolverine, Intaco, я видел, просто хотелось бы узнать еще какие-нибудь, чтобы была возможность выбрать.
_________________________

Цитата:
Сообщение от Intaco Посмотреть сообщение
Загвоздка у нас в задке
Андрей вне форума   Ответить с цитированием
Старый 19.07.2013   Post #13
w8me
Аватар для HanDi
 
Регистрация: 13.07.2013
Сообщений: 315
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 16
Репутация: 176
Живет на форуме:
1 мес 2 нед 1 д
По умолчанию

Intaco, хороший билдер, ставь Embarcadero C++ builder (по сути любую версию, можешь XE, 2010), там не будет проблем с кодировкой, по крайней мере в VCL.
HanDi вне форума   Ответить с цитированием
Старый 19.07.2013   Post #14
Гость
Аватар для Jak
 
Регистрация: 08.07.2013
Сообщений: 30
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 12
Репутация: 33
Живет на форуме:
1 д. 9 ч 32 мин
По умолчанию

Такс, по порядку.
Код:
setlocale(LC_ALL, "");
Вставить это после объявления мэйна и нет проблем. Собссно, это третий вариант волверина.

Если нужно вводить русские символы - система чуть другая и ненамного сложнее.
Код:
// Объявить переменную, в которой начальное значение кодировки консоли
int cp=GetConsoleCP();

// Далее в нужных частях программы (перед вводом) меняем кодировку и потом возвращаем родную
cout << "Введите символ: ";
SetConsoleCP(1251);
cin >> symbol;
SetConsoleCP(cp);
Далее - за "Sleep(10000)" надо бить линейкой по пальцам. system("pause"); или cin.get(); - путь джедая!

Ещё далее - сиплюсы это больше работа с потоками, тобишь с текстом лучше работать через cin и cout, если не требуется какое-то особое форматирование.
Если серьёзно нужно изучать - однозначно советую Страуструпа, основатель как-никак.

Последний раз редактировалось Jak; 19.07.2013 в 01:36.
Jak вне форума   Ответить с цитированием
Старый 19.07.2013   Post #15
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию

Собственно мне помог вышеуказанный способ вульва, но все равно спасибо)
И еще хотелось бы задать последний вопрос днища, надеюсь я еще не израсходовал ваше терпение.
В моем учебника предлагается использовать функцию ввода-вывода <stdio.h> заместо <iostream>
В чем между ними разница?
Intaco вне форума   Ответить с цитированием
Старый 19.07.2013   Post #16
Частый гость
Аватар для Wolverine
 
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
По умолчанию

Intaco, stdio.h пришел из С.
Iostream это уже заголовок из С++, работа с потоками
Насчет того, что лучше - мнения расходятся, т.к это все же зависит от ситуации.

stdio, старый вариант, считается более простым. Потому, что в потоках С++ разбираться уже сложнее. Так что я бы советовал пока использовать stdio, как и сказано в учебнике. А в тонкостях и разнице между заголовками разберешься по ходу дела, с опытом

//Jak, зато ты подтвердаешь мои слова) интако будет спокойнее).
Вообще у гениев же мысли сходятся. Но и у дураков тоже(

Последний раз редактировалось Wolverine; 19.07.2013 в 13:20.
Wolverine вне форума   Ответить с цитированием
Старый 19.07.2013   Post #17
Гость
Аватар для Jak
 
Регистрация: 08.07.2013
Сообщений: 30
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 12
Репутация: 33
Живет на форуме:
1 д. 9 ч 32 мин
По умолчанию

Цитата:
Сообщение от Intaco Посмотреть сообщение
В моем учебника предлагается использовать функцию ввода-вывода <stdio.h> заместо <iostream>
В чем между ними разница?
Хм.. Особо не вникал, дабы как-то не ошибиться, отвечу что знаю точно.

<stdio.h> - СИшная приблуда, поэтому работать будет много где, а <iostream> - чистый С++, больше на ООП рассчитан. В небольших С/С++ программах, наверное, без разницы что использовать, но если конкретно С++ изучать - без иострима никуда :)

P.S. Лично я всё своё пытался через потоки писать, там ещё и работа с файлами, например, через них идёт; как разобрался более-менее с базовым синтаксисом - вообще всё легко шло)

P.P.S. Волверин опять первый :)
Jak вне форума   Ответить с цитированием
Старый 19.07.2013   Post #18
Знающий
Аватар для Intaco
 
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
По умолчанию

Спасибо ребят)
Intaco вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Текущее время: 16:33. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot
Template-Modifications by TMS