Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661

Строки в С++ Современный подход

01.10.2018, 08:46. Показов 2621. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Какой все же современный подход к работе со строками в С++?
В С существовали только нуль-терминированные строки типа char[n] s; в conio.h
Потом в С++ была предложена система потоковых классов вверху которой были
ios c подклассами istream ostream и streambuf
До сих пор в т.н. олимпиадном программировании для школьников придердиваются технологии чтения и записи в файл через
C++
1
2
3
4
5
6
7
 ifstream inp;ofstream out;
 inp.open("input.txt");
inp >>n;
 inp.close();
 out.open("out3.txt");
 out <<s<<endl; 
out.close();
были приемчики типа cin.getline
Но вот появилось 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2018, 08:46
Ответы с готовыми решениями:

Каков современный подход для работы со строками
Здравствуйте, хотел узнать современный подход для работы со строками. В С++ так же используется библиотека #include &lt;string&gt;, а...

Объектный подход...
//--------------------------------------------------------------------------- #pragma hdrstop #include &lt;tchar.h&gt; #include...

Подход к изучению программирования
Здравствуйте уважаемые программисты, как начинающие, так и профессионалы! Моя жизнь скучна, у меня нет увлечений, от меня нет пользы. ...

37
Эксперт .NET
 Аватар для Usaga
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
Эксперт .NET
 Аватар для Usaga
14298 / 9383 / 1353
Регистрация: 21.01.2016
Сообщений: 35,374
01.10.2018, 09:51
eugrita, я не знаю, что вы там изучаете. В Visual Studio можно разрабатывать как на мутанте C++\CLI, так и на нормальном С++ (с расширениями от MS).

Цитата Сообщение от eugrita Посмотреть сообщение
представьте, вы преподаватель чистого С++ в вузе. (не диалекта)
Какую оболочку вы попросите поставить ?
Можно какие-нибудь CodeBlocks или QtCreator в связке с GCC (или его портом, если речь о винде). Можно и Visual Studio Community последней версии, но в VСPP поддержка фишек языка выходит с запозданием.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
01.10.2018, 10:20
Цитата Сообщение от eugrita Посмотреть сообщение
представьте, вы преподаватель чистого С++ в вузе. (не диалекта)
Какую оболочку вы попросите поставить ?
На усмотрение студентов, не хотят - могут вообще не ставить никакую среду и использовать онлайн-компиляторы.
Главное чтобы была поддержка C++11.
Вам надо понять, что изучение языка не должно зависеть от среды. Если зависит, значит вы учите среду.

Добавлено через 1 минуту
Цитата Сообщение от eugrita Посмотреть сообщение
Тогда что мы изучаем в компьютерном классе где стоит оболочка Visual Studio NET какой-то версии (в Бауманке вроде до сих пор 8).и как назвать этот курс? Не курс С++ а курс диалекта С++?
Видимо вы ничего там не изучаете, раз даже не знаете как курс называется. Только время тратите и все.
Или еще хуже - вам там какой-то бред впаривают вместо программирования.
0
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
01.10.2018, 10:23
Цитата Сообщение от eugrita Посмотреть сообщение
Какой все же современный подход к работе со строками в С++?
Цитата Сообщение от eugrita Посмотреть сообщение
В С существовали только нуль-терминированные строки типа char[n]
Давайте что-нибудь современное изучать.
Например в с++ 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
Эксперт .NET
 Аватар для Usaga
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
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
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, я в упор не понимаю, как и чему вы будете учить людей, если вам самой нужно учиться. Я считаю, что это обоснованное замечание и реагировать остро на это не надо. В конце концов, это вы тут C++\CLI от C++ не отличаете.

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.10.2018, 11:41
Цитата Сообщение от eugrita Посмотреть сообщение
цель - изучение стандарта С++ ни больше ни меньше. Я не хочу гнаться за новинками типа 17 версии
С++17 (также известный как C++1z) — это название версии стандарта C++ ISO/IEC.
нежелание изучать его противоречит вашей цели.

Цитата Сообщение от eugrita Посмотреть сообщение
Я хочу остановиться на одной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам
используйте std::string/std::wstring
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
01.10.2018, 11:51
https://sergeyteplyakov.blogsp... 1-faq.html
Цитата Сообщение от Б.Страуструп
Какова была цель создания С++11?
...
Сделать язык С++ проще для обучения и изучения путем унификации возможностей, более строгих гарантий и направленности на новичков (новичков всегда будет больше, чем экспертов).
Старый добрый С++, развиваясь, превратился в язык не для новичков

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
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.10.2018, 12:12
eugrita, толсто троллишь. Среди преподов, конечно, попадаются некомпетентные, но не настолько.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.10.2018, 12:24
Цитата Сообщение от eugrita Посмотреть сообщение
Вот в этом и беда в C++ куча стандартов.
в чем именно вы видите "беду"?

Цитата Сообщение от eugrita Посмотреть сообщение
C++ 1z - вроде только разрабатывется
аллё, гараж. официально был принят в декабре 2017 года.

Цитата Сообщение от eugrita Посмотреть сообщение
всякие GNU- компиляторы
у которых есть волшебные ключики,
которые отключают волшебные расширения от компилятора,
если они вам не нужны.

и кстати, не так уж часто вы будете с ними сталкиваться.

Цитата Сообщение от eugrita Посмотреть сообщение
А в результате бесплодно тратится время на изучение различий вместо быстрого освоения типовых приемов на возможно большем круге задач.
как то сомнительно, что вы вообще знаете о топовых различиях между например cl (компилятор вижуал студии),
и гнутым g++ (из коробки gnu gcc)

расширения есть у многих компиляторов.
но большинство из них - редкие кейсы, которые обычно не лежат на поверхности.

Цитата Сообщение от eugrita Посмотреть сообщение
А всякие Console::ReadLine()
вообще не имеет никакого отношения к с++.
вам нужно осознать, что C++\CLI и C++ - принципиально разные языки.

Цитата Сообщение от eugrita Посмотреть сообщение
на хера мне эти разные технологии для одной и той же задачи
технология "молоток" - удобная для забивания гвоздей.

технология "микроскоп" - удобная для наблюдением за мельчайшими частичками.

технология C++\CLI - тупиковая ветвь в эволюции.
полностью вытеснена технологией C#,
и существует лишь на задворках истории.


нахера вы начали изучать мертворожденную технологию?
2
 Аватар для Jman
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
01.10.2018, 12:34
Цитата Сообщение от eugrita Посмотреть сообщение
Console::ReadLine()
ОМГ... Это ведь для CLR (С++/CLI), что бы можно было интегрировать строчки программы на разных языках под общую языковую среду .NET. Тру это линукс + nano + GCC. Или как говорит Usaga - Code::Blocks, или RadStudio - но он платен, насколько мне известно.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
01.10.2018, 12:40
Цитата Сообщение от eugrita Посмотреть сообщение
в C++ куча стандартов
В C++ один стандарт.
Вся эта "куча" - устаревшие версии стандарта, которых, кстати,
намного меньше, чем, например, спецификаций "Java".
Это как день из жизни - дней много было, но сегодня один единственный.

P.S. Это ему к Рафе надо.
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
01.10.2018, 12:45
Цитата Сообщение от avgoor Посмотреть сообщение
Среди преподов, конечно, попадаются некомпетентные, но не настолько.
Если курс математически-алгоритмический, то особой разницы нет между условными Фортраном, Паскалем и C++.
Если предмет курса не язык. И учатся физики, математики или инженеры-неайтишники.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2018, 12:45
Помогаю со студенческими работами здесь

Наивный подход CRC-32
Объясните пожалуйста что делает каждая строчка функции в наивном подходе CRC-32. static uint32_t crc32_naive(uint8_t *buf) { ...

Подскажите подход к решению
Добрый вечер. Есть задача из книги Страуструпа для начинающих. Решение должно быть реализовано на основе библиотеки FLTK и написанных...

Параллельное программирование (конвейерный подход)
Здравствуйте форумчане, выручите подскажите в чем заключается распараллеливание с помощью конвейерного подхода?Суть моей задачи заключается...

сессия.Какой подход к программированию используется на языке С++
1.Какой подход к программированию используется на языке С++? Основные понятия, семантика, синтаксис 2.Для каких целей используются...

Современный borland C
Добрый день! Для обучения многие годы использовалась среда программирования Borland C. Но сейчас она уже устарела и не поддерживается...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере 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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru