Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.68
12kb
Сообщений: n/a
#1

string и cstring. Как это устроено? - C++

28.11.2012, 22:58. Просмотров 5790. Ответов 4
Метки нет (Все метки)

Здравствуйте.
Изучаю азы С++. В процессе возникло несколько вопросов. Вопросы простые, но мне мешают.
Во-первых. В стандартном наборе (Visual Studio 2012) имеются 2 библиотеки для работы со строками - это string и cstring. Какая между ними разница?
Не в плане самих функций - это детали, а в общем. Гдето (в дебрях этого форума) я видел ответ что cstring это мелкософтовская библиотека, в то же время на википедии видел её в списке стандартных библиотек С++. Могу предпожить что библиотека string была в С, а cstring добавилась в ++, при этом старая осталась для совместимости, как с iostream и stdio...
Вобщем то там несколько библиотек с перфиксами схххх. Вот я и хочу понять что это значит, и в каких случаях какой из них пользоваться.
Второй вопрос менее масштабный . Почему для реализации функции strlen() strcat() strstr() (может еще какихто) не нужно разрешать область видимости? Они ж стандартные? Значит поидее должны быть std::... а они и так и так работают Более того им даже не нужно #include<string>, хотя поидее они должны содержаться в ней. Опять же, я подозреваю, что они, наверное, пришли из C.
Так же буду благодарен за любые пояснения касательно устройства с++, и за ссылки на статьи по данной тематике.
Спасибо.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 22:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос string и cstring. Как это устроено? (C++):

Отличие CString от std::string - C++
Меня интересует такой глупый вопрос В чём отличия CString от просто string? :-[

Чем отличается <string> и <cstring>? - C++
Добрый день! Подскажите, чем отличается string и cstring, использующиеся в заголовке?

CString.Delete и std::string.erace - C++
Скажите пожалуйста, может кто знает, как работают эти методы? Они просто переносят указатель на нужный нам символ или освобождают память,...

Чем отличается #include <cstring>, #include <string> и #include <string.h>? - C++
Доброго времени суток :) Пишу свой класс и мне для нужны функции для работы со строками. Когда подключаю #include &lt;string&gt; все что мне...

как правильно понять тип bool ? bool true(const string &str) и что дает это значение ? - C++
задам может глупый вопрос, но прошу ответить. как правильно понять тип bool ? bool true(const string &amp;str) и что дает это...

В паскале это называется String - C++
Чем больше я изучаю С, тем больше понимаю, что этот язык придумали извращенцы. В общем это... в паскале это делается так: Z String; ...

4
I.M.
565 / 548 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.11.2012, 23:02 #2
в Си была библиотека string.h
в ней хранились все функции вида strlen() strcat() strstr()
в С++ библиотеку string.h переименовали в cstring
Собственно, так же поступили и с другим наследием Си.
А библиотека string содержит тип std::string - это строка С++
1
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
28.11.2012, 23:03 #3
http://www.cplusplus.com/reference/cstring/
http://www.cplusplus.com/reference/clibrary/
1
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
09.03.2013, 11:26 #4
Тоже возник аналогичный вопрос, и вот что про cstring (как в общем-то и про все остальные заголовки формата с++) написано в хэлпе к xe2:
Including this header also ensures that the names declared with external linkage in the Standard C library header are declared in the std namespace. In this implementation, the names may or may not also be declared in the global namespace, depending on the specific translation environment.
Итак, если я правильно понимаю, то при использовании заголовка string.h имена с "внешним связыванием" объявляются вне пространства имён std, в отличии от cstring. Также в случае cstring имена могут быть объявлены в глобальном пространстве имён.
И что же всё это означает? Что нам это в итоге даёт?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.03.2013, 12:35 #5
Подключение cstring или string.h разницы нет, потому что в cstring подключена string.h. В стиле С++ писать cstring. Подключение string даёт возможность работать с классом string (это уже С++).

Добавлено через 5 минут
Цитата Сообщение от 12kb Посмотреть сообщение
Они ж стандартные? Значит поидее должны быть std::... а они и так и так работают Более того им даже не нужно #include<string>, хотя поидее они должны содержаться в ней. Опять же, я подозреваю, что они, наверное, пришли из C.
Правильно подозреваете, поэтому для них и не нужен std::, потому что пространства имён - это С++.
1
09.03.2013, 12:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2013, 12:35
Привет! Вот еще темы с ответами:

Как CString преобразовать к нормальной строке? - C++
// ... CRecordset *m_rs; // ... LVITEM lvi; // ... СString s; m_rs-&gt;GetFieldValue(j, s); lvi.pszText = ?;Тип lvi.pszText -...

Как из CString получить int ... заранее спасибо!! - C++
Проблемка ... Как из CString получить int.... только плиз не советуйте куда заглядывать в MSDN у меня его нету.... СПАСИБО....

Как перевести CString -ское число в Int? - C++
Есть CString -ское число. Как перевести это число в int??? Вот: { m_cap = m_cap + '1'; m_cap = c; int c = attol(m_cap); c =...

strstr из библиотеки cstring, как должно функционировать? - C++
Вот у меня есть описание, переписано из книги: Вот программа: #include &lt;iostream&gt; using std::cin; using std::cout; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru