5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
1

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

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

Author24 — интернет-сервис помощи студентам
Какой все же современный подход к работе со строками в С++?
В С существовали только нуль-терминированные строки типа 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2018, 08:46
Ответы с готовыми решениями:

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

Объектный подход...
//--------------------------------------------------------------------------- #pragma hdrstop ...

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

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

37
Эксперт .NET
12131 / 8450 / 1291
Регистрация: 21.01.2016
Сообщений: 31,818
01.10.2018, 09:13 2
eugrita, .NET появился в C++\CLI. Это диалект или вообще другой язык программирования. Не С++. Я бы его вообще ни стал рассматривать, а использовал или .NET (C#, VB.NET) или нормальный С++, но не этого гибрида от MS. Поэтому вопрос немного бессмысленный.
3
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
01.10.2018, 09:38  [ТС] 3
правильно ли вас понял что вы утверждаете что С++ на платформе NET это фактически другой язык по сравнению с С++
Хорошо. Тогда что мы изучаем в компьютерном классе где стоит оболочка Visual Studio NET какой-то версии (в Бауманке вроде до сих пор 8).и как назвать этот курс? Не курс С++ а курс диалекта С++?

Добавлено через 12 минут
представьте, вы преподаватель чистого С++ в вузе. (не диалекта)
Какую оболочку вы попросите поставить ?
0
Эксперт .NET
12131 / 8450 / 1291
Регистрация: 21.01.2016
Сообщений: 31,818
01.10.2018, 09:51 4
eugrita, я не знаю, что вы там изучаете. В Visual Studio можно разрабатывать как на мутанте C++\CLI, так и на нормальном С++ (с расширениями от MS).

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

Добавлено через 1 минуту
Цитата Сообщение от eugrita Посмотреть сообщение
Тогда что мы изучаем в компьютерном классе где стоит оболочка Visual Studio NET какой-то версии (в Бауманке вроде до сих пор 8).и как назвать этот курс? Не курс С++ а курс диалекта С++?
Видимо вы ничего там не изучаете, раз даже не знаете как курс называется. Только время тратите и все.
Или еще хуже - вам там какой-то бред впаривают вместо программирования.
0
166 / 109 / 57
Регистрация: 30.08.2018
Сообщений: 357
01.10.2018, 10:23 6
Цитата Сообщение от 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  [ТС] 7
Я уже сформулировал цель - изучение стандарта С++ ни больше ни меньше. Я не хочу гнаться за новинками типа 17 версии как предлагает один из уч-ков, Я также понимаю что все эти Console::ReadLine() и методы System:: String
видимо отличаются от стандартного С++ (как назвали выше - диалект).
Моя цель впихнуть в учащихся как можно больше типов интересных задач в т.ч. со строками не заморачивая им голову разными технологиями. Я хочу остановиться на обной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам
0
Эксперт .NET
12131 / 8450 / 1291
Регистрация: 21.01.2016
Сообщений: 31,818
01.10.2018, 10:59 8
eugrita, как же мне жаль ваших учеников.
1
5 / 6 / 4
Регистрация: 18.11.2009
Сообщений: 661
01.10.2018, 11:03  [ТС] 9
Я уже сформулировал цель - изучение стандарта С++ ни больше ни меньше. Я не хочу гнаться за новинками типа 17 версии как предлагает один из уч-ков, Я также понимаю что все эти Console::ReadLine() и методы System:: String
видимо отличаются от стандартного С++ (как назвали выше - диалект).
Я ставлю выше формулировку интересных задач чем изучения технологий их решения
Поэтому иоя цель - впихнуть в учащихся как можно больше типов интересных задач в т.ч. со строками не заморачивая им голову разными технологиями.
Я хочу остановиться на одной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам
Видимо все же это потоковый ввод вывод iostream ifstream ofstream, cin. cout
А все другое по вашему же замечанию будет называться изучением не языка а среды
0
Модератор
2122 / 992 / 169
Регистрация: 23.07.2018
Сообщений: 3,333
Записей в блоге: 3
01.10.2018, 11:12 10
Как студенты могут это попробовать на устаревших компиляторах?
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  [ТС] 11
с poliloto согласен. Наверное надо выделять алгоритмический подход к изучению, где во главе стоит алгоритм решения задачи и допускается плюрализм - написание на разных языках как в школьном олимпиадном программировании.
2-й подход - разработка профессионального приложения с GUI-интерфейсом, возможно с графикой. Оно уже жестко привязано к среде. И решающим является выбор платформы разработки
Интересна ссылка на устаревшие компиляторы - прокомментируйте пожалуйста
0
Usaga
01.10.2018, 11:29
  #12

Не по теме:

eugrita, я в упор не понимаю, как и чему вы будете учить людей, если вам самой нужно учиться. Я считаю, что это обоснованное замечание и реагировать остро на это не надо. В конце концов, это вы тут C++\CLI от C++ не отличаете.

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

Цитата Сообщение от eugrita Посмотреть сообщение
Я хочу остановиться на одной стандартной, чтобы это не было слишком устаревшей и обучить типовым приемам
используйте std::string/std::wstring
0
Модератор
2122 / 992 / 169
Регистрация: 23.07.2018
Сообщений: 3,333
Записей в блоге: 3
01.10.2018, 11:51 14
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  [ТС] 15
Вот в этом и беда в C++ куча стандартов. C++ 1z - вроде только разрабатывется, C++\CLR еще всякие GNU- компиляторы. А в результате бесплодно тратится время на изучение различий вместо быстрого освоения типовых приемов на возможно большем круге задач. А всякие Console::ReadLine() я в свое время пробовал но так ии не понимаю, на хера мне эти разные технологии для одной и той же задачи
0
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
01.10.2018, 12:12 16
eugrita, толсто троллишь. Среди преподов, конечно, попадаются некомпетентные, но не настолько.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.10.2018, 12:24 17
Цитата Сообщение от eugrita Посмотреть сообщение
Вот в этом и беда в C++ куча стандартов.
в чем именно вы видите "беду"?

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

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

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

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

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

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

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

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

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


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

P.S. Это ему к Рафе надо.
0
Модератор
2122 / 992 / 169
Регистрация: 23.07.2018
Сообщений: 3,333
Записей в блоге: 3
01.10.2018, 12:45 20
Цитата Сообщение от avgoor Посмотреть сообщение
Среди преподов, конечно, попадаются некомпетентные, но не настолько.
Если курс математически-алгоритмический, то особой разницы нет между условными Фортраном, Паскалем и C++.
Если предмет курса не язык. И учатся физики, математики или инженеры-неайтишники.
0
01.10.2018, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2018, 12:45
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru