|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
||||||
Строки в С++ Современный подход01.10.2018, 08:46. Показов 2621. Ответов 37
Метки нет (Все метки)
Какой все же современный подход к работе со строками в С++?
В С существовали только нуль-терминированные строки типа char[n] s; в conio.h Потом в С++ была предложена система потоковых классов вверху которой были ios c подклассами istream ostream и streambuf До сих пор в т.н. олимпиадном программировании для школьников придердиваются технологии чтения и записи в файл через
Но вот появилось NET с своей иерархией классов и пространствами имен System::IO с классами Stream ,BufferedStream FileStream, MemoryStream StreaMReader, StreamWriter ... и System::String c cвоим типом String но методами отличными от типа String в Сstring.h ------------------------------------------------------------------------------------------------------------------ Ну и каков будет совет опытных программистов для обучения С++ Задачи на строки были всегда начиная с раннего С. В каком стиле их решать? Могу лишь заметить что учебные пособия для студентов пишутся обтекаемо, так в Алексеев Е.Р., Чеснокова О.В., Кучер Т.В. Лабораторные работы «Программирование на С++» c учебником "Учимся программировать на Microsoft Visual C++ и Turbo C++ Explorer (под общ ред Чесноковой О. В.) / Алексеев Е. Р. - М.: НТ Пресс, 2007." - задачи на строки просто обходятся.Есть только тип на текстовые и двоичные файлы (несмотря на мой взгляд на довольно богатый выбор типов задач лоя студ - (в частности на линейную алгебру) ------------------------------------------------------------------------------------------------------------------------------------ Мне конечно ясно, что обучение С++ ведется по разному. Скажем школьников любят учить на оболочке CodeBlocks в которй естественно нет классов NET, но вот для студентов в осн используют Visual Studio NET. Значит ли это что методики обучения программированию для школьников и студентов в части строк должны отличаться?
0
|
||||||
| 01.10.2018, 08:46 | |
|
Ответы с готовыми решениями:
37
Каков современный подход для работы со строками
Подход к изучению программирования |
|
14298 / 9383 / 1353
Регистрация: 21.01.2016
Сообщений: 35,374
|
|
| 01.10.2018, 09:13 | |
|
eugrita, .NET появился в
C++\CLI. Это диалект или вообще другой язык программирования. Не С++. Я бы его вообще ни стал рассматривать, а использовал или .NET (C#, VB.NET) или нормальный С++, но не этого гибрида от MS. Поэтому вопрос немного бессмысленный.
3
|
|
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 01.10.2018, 09:38 [ТС] | |
|
правильно ли вас понял что вы утверждаете что С++ на платформе NET это фактически другой язык по сравнению с С++
Хорошо. Тогда что мы изучаем в компьютерном классе где стоит оболочка Visual Studio NET какой-то версии (в Бауманке вроде до сих пор 8).и как назвать этот курс? Не курс С++ а курс диалекта С++? Добавлено через 12 минут представьте, вы преподаватель чистого С++ в вузе. (не диалекта) Какую оболочку вы попросите поставить ?
0
|
|
|
14298 / 9383 / 1353
Регистрация: 21.01.2016
Сообщений: 35,374
|
||
| 01.10.2018, 09:51 | ||
|
eugrita, я не знаю, что вы там изучаете. В Visual Studio можно разрабатывать как на мутанте C++\CLI, так и на нормальном С++ (с расширениями от MS).
0
|
||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|||
| 01.10.2018, 10:20 | |||
|
Главное чтобы была поддержка C++11. Вам надо понять, что изучение языка не должно зависеть от среды. Если зависит, значит вы учите среду. Добавлено через 1 минуту Или еще хуже - вам там какой-то бред впаривают вместо программирования.
0
|
|||
|
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
|
|||
| 01.10.2018, 10:23 | |||
|
Например в с++ 17 появился std string view. c++ 17 avoid copying with std string view
2
|
|||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 01.10.2018, 10:58 [ТС] | |
|
Я уже сформулировал цель - изучение стандарта С++ ни больше ни меньше. Я не хочу гнаться за новинками типа 17 версии как предлагает один из уч-ков, Я также понимаю что все эти Console::ReadLine() и методы System:: String
видимо отличаются от стандартного С++ (как назвали выше - диалект). Моя цель впихнуть в учащихся как можно больше типов интересных задач в т.ч. со строками не заморачивая им голову разными технологиями. Я хочу остановиться на обной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам
0
|
|
|
14298 / 9383 / 1353
Регистрация: 21.01.2016
Сообщений: 35,374
|
|
| 01.10.2018, 10:59 | |
|
eugrita, как же мне жаль ваших учеников.
1
|
|
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 01.10.2018, 11:03 [ТС] | |
|
Я уже сформулировал цель - изучение стандарта С++ ни больше ни меньше. Я не хочу гнаться за новинками типа 17 версии как предлагает один из уч-ков, Я также понимаю что все эти Console::ReadLine() и методы System:: String
видимо отличаются от стандартного С++ (как назвали выше - диалект). Я ставлю выше формулировку интересных задач чем изучения технологий их решения Поэтому иоя цель - впихнуть в учащихся как можно больше типов интересных задач в т.ч. со строками не заморачивая им голову разными технологиями. Я хочу остановиться на одной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам Видимо все же это потоковый ввод вывод iostream ifstream ofstream, cin. cout А все другое по вашему же замечанию будет называться изучением не языка а среды
0
|
|
|
Модератор
|
|
| 01.10.2018, 11:12 | |
|
Как студенты могут это попробовать на устаревших компиляторах?
https://isocpp.org/wiki/faq/cp... zed-return C++\CLI - язык, в котором к С++ неизящно добавлено очень много того, что не является C++ http://www.stroustrup.com/bs_faq.html#CppCLI Смысл гибрида - связывание нормального кода C++ с нормальным кодом .Net ( C# etc.) запрограммировать самому. Специфическая задача, которая при начальном обучении не нужна. А когда нужна, то нужна больше самому дотнету.
1
|
|
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 01.10.2018, 11:29 [ТС] | |
|
с poliloto согласен. Наверное надо выделять алгоритмический подход к изучению, где во главе стоит алгоритм решения задачи и допускается плюрализм - написание на разных языках как в школьном олимпиадном программировании.
2-й подход - разработка профессионального приложения с GUI-интерфейсом, возможно с графикой. Оно уже жестко привязано к среде. И решающим является выбор платформы разработки Интересна ссылка на устаревшие компиляторы - прокомментируйте пожалуйста
0
|
|
| 01.10.2018, 11:29 | |
|
Не по теме: eugrita, я в упор не понимаю, как и чему вы будете учить людей, если вам самой нужно учиться. Я считаю, что это обоснованное замечание и реагировать остро на это не надо. В конце концов, это вы тут
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 01.10.2018, 11:41 | |||
|
нежелание изучать его противоречит вашей цели.
0
|
|||
|
Модератор
|
||
| 01.10.2018, 11:51 | ||
|
https://sergeyteplyakov.blogsp... 1-faq.html
https://isocpp.org/wiki/faq/how-to-learn-cpp Если ученики вынуждены пользоваться компилятором, который не соответствует хотя бы C++11, им приходится изучать гораздо более трудный язык, чем сейчас это необходимо, не получая в замен никаких дополнительных преимуществ.
0
|
||
|
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
|
|
| 01.10.2018, 11:53 [ТС] | |
|
Вот в этом и беда в C++ куча стандартов. C++ 1z - вроде только разрабатывется, C++\CLR еще всякие GNU- компиляторы. А в результате бесплодно тратится время на изучение различий вместо быстрого освоения типовых приемов на возможно большем круге задач. А всякие Console::ReadLine() я в свое время пробовал но так ии не понимаю, на хера мне эти разные технологии для одной и той же задачи
0
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 01.10.2018, 12:12 | |
|
eugrita, толсто троллишь. Среди преподов, конечно, попадаются некомпетентные, но не настолько.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 01.10.2018, 12:24 | |||||||
|
которые отключают волшебные расширения от компилятора, если они вам не нужны. и кстати, не так уж часто вы будете с ними сталкиваться. и гнутым g++ (из коробки gnu gcc) расширения есть у многих компиляторов. но большинство из них - редкие кейсы, которые обычно не лежат на поверхности. вам нужно осознать, что C++\CLI и C++ - принципиально разные языки.технология "микроскоп" - удобная для наблюдением за мельчайшими частичками. технология C++\CLI - тупиковая ветвь в эволюции. полностью вытеснена технологией C#,и существует лишь на задворках истории. нахера вы начали изучать мертворожденную технологию?
2
|
|||||||
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
||
| 01.10.2018, 12:34 | ||
|
0
|
||
|
Неэпический
|
||
| 01.10.2018, 12:40 | ||
|
Вся эта "куча" - устаревшие версии стандарта, которых, кстати, намного меньше, чем, например, спецификаций "Java". ![]() Это как день из жизни - дней много было, но сегодня один единственный. P.S. Это ему к Рафе надо.
0
|
||
|
Модератор
|
||
| 01.10.2018, 12:45 | ||
|
Если предмет курса не язык. И учатся физики, математики или инженеры-неайтишники.
0
|
||
| 01.10.2018, 12:45 | |
|
Помогаю со студенческими работами здесь
20
Наивный подход CRC-32 Подскажите подход к решению Параллельное программирование (конвейерный подход) сессия.Какой подход к программированию используется на языке С++ Современный borland C Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|