18.07.2013 | Post #1 |
Знающий
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
|
C++
Привет пасаны и дамы!
Вот решил я значить заняться самообразованием летом и попытаться познать необъятное, а именно язык программирования СиПиПи. Скачал значить учебник, среду разработки, все дела, но во время запила моей первой программы, а именно "Хеллоу, ворлд" я вдруг осознал, что у меня не получается написать это кириллицей. Ну то есть уаще. На выходе я получаю абракадабры в консоли. Причем от смены среды проблема не исчезает. А теперь под всеобщее улюлюканье хочу получить совета по этому вопросу от знающих людей. А еще если кто знает толковые учебники по C++ для кипятильников то заделитесь) Спасибо. |
18.07.2013 | Post #2 |
Частый гость
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
|
Т.А Павловская - C/C++
Серия "Программирование на языке высокого уровня" Стоит в районе 400 рублей в хорошем, твердом переплете Написана неплохо, доступно (насколько это можно сказать про С++) Насчет абракадабры компилятор, среда разработки, какие, чем пользовался? Если писать на латинице 'Hello World!'' - тоже самое? Последний раз редактировалось Wolverine; 18.07.2013 в 23:43. |
18.07.2013 | Post #4 |
Частый гость
Регистрация: 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. |
19.07.2013 | Post #5 |
Знающий
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
|
Со вторым вариантом вообще жуть. 3-й компилируется, но окно сразу закрывается после запуска. Последний раз редактировалось Intaco; 19.07.2013 в 00:17. |
19.07.2013 | Post #6 |
Частый гость
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
|
Intaco, Вообще удобство CharToOem (второй вариант) в том, что он работает на любой машине. Тут проблема может быть в версии компилятора разве что
А третий вариант? Сейчас разберемся Последний раз редактировалось Wolverine; 19.07.2013 в 00:21. |
19.07.2013 | Post #8 |
лалка
Регистрация: 07.07.2013 Возраст: 30
Сообщений: 115
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 14
Репутация: 102
Живет на форуме:
1 мес 1 нед 5 д
|
Я понимаю, что может быть, не совсем по теме, но не могли бы вы написать названия хороших книг по С и C++.
|
19.07.2013 | Post #10 |
Знающий
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
|
Андрей, ты, судя по всему, даже не прочитал тему.
Добавлено через 29 секунд Cyborg, я пытался, но не вдуплил( А еще он мне сраль на рабочий стол какими-то файлами в сурьезных масштабах. |
19.07.2013 | Post #11 |
Частый гость
Регистрация: 10.07.2013
Сообщений: 73
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 13
Репутация: 126
Живет на форуме:
1 нед 3 д 20 ч
|
Intaco, у тебя же Dev++, а не просто консоль
Там вопрос в перекодировке (СР-88 и СР-1251) ВОТ решение вопроса с кириллицей для Dev++ С этим способом будет сразу осуществляться перекодировка русских символов под нужный формат Пробуй, отпишись потом Последний раз редактировалось Wolverine; 19.07.2013 в 00:39. |
19.07.2013 | Post #12 |
лалка
Регистрация: 07.07.2013 Возраст: 30
Сообщений: 115
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 14
Репутация: 102
Живет на форуме:
1 мес 1 нед 5 д
|
Wolverine, Intaco, я видел, просто хотелось бы узнать еще какие-нибудь, чтобы была возможность выбрать.
|
19.07.2013 | Post #13 |
w8me
Регистрация: 13.07.2013
Сообщений: 315
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 16
Репутация: 176
Живет на форуме:
1 мес 2 нед 1 д
|
Intaco, хороший билдер, ставь Embarcadero C++ builder (по сути любую версию, можешь XE, 2010), там не будет проблем с кодировкой, по крайней мере в VCL.
|
19.07.2013 | Post #14 |
Гость
Регистрация: 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); Ещё далее - сиплюсы это больше работа с потоками, тобишь с текстом лучше работать через cin и cout, если не требуется какое-то особое форматирование. Если серьёзно нужно изучать - однозначно советую Страуструпа, основатель как-никак. Последний раз редактировалось Jak; 19.07.2013 в 01:36. |
19.07.2013 | Post #15 |
Знающий
Регистрация: 12.07.2013
Сообщений: 152
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 15
Репутация: 200
Живет на форуме:
4 д. 20 ч 2 мин
|
Собственно мне помог вышеуказанный способ вульва, но все равно спасибо)
И еще хотелось бы задать последний вопрос днища, надеюсь я еще не израсходовал ваше терпение. В моем учебника предлагается использовать функцию ввода-вывода <stdio.h> заместо <iostream> В чем между ними разница? |
19.07.2013 | Post #16 |
Частый гость
Регистрация: 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. |
19.07.2013 | Post #17 | |
Гость
Регистрация: 08.07.2013
Сообщений: 30
Сказал(а) спасибо: 0
Получено Спасибо 0 раз(а) в 0 постах
Вес репутации: 12
Репутация: 33
Живет на форуме:
1 д. 9 ч 32 мин
|
Цитата:
<stdio.h> - СИшная приблуда, поэтому работать будет много где, а <iostream> - чистый С++, больше на ООП рассчитан. В небольших С/С++ программах, наверное, без разницы что использовать, но если конкретно С++ изучать - без иострима никуда :) P.S. Лично я всё своё пытался через потоки писать, там ещё и работа с файлами, например, через них идёт; как разобрался более-менее с базовым синтаксисом - вообще всё легко шло) P.P.S. Волверин опять первый :) |
|