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

Объясните в каких случаях используеться char, а в каких string?

15.01.2016, 08:16. Показов 13118. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем(в каких случаях) использовать char, и char *...
Зачем(в каких случаях) использовать string...
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.01.2016, 08:16
Ответы с готовыми решениями:

В каких случаях нужно создавать динамические переменные, а в каких статические?
такой же вопрос и по массивам ! Объясните пожалуйста !

В каких случаях необходимо включать include string
В каких случаях необходимо использовать инструкцию препроцессора #include <string>? Раньше я думал, что это необходимо всякий раз,...

<iostream> в каких случаях используется?
Что такое &lt;iostream&gt; расскажите о нем, для чего он используется.

9
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
15.01.2016, 08:39
string - это класс для удобного использования строк. Например можно склеивать строки с помощью знака +, с стандартными строками это делается немного сложнее.
char, char*-стандартные типы данных.
2
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
15.01.2016, 08:49
всегда string. Ну или если уже совсем только один символ то char. Или если точно уверен что тебе нужен именно char, а так string.

string - тот же набор из char только в людском подобии.
1
337 / 185 / 80
Регистрация: 22.08.2013
Сообщений: 724
15.01.2016, 11:11
Цитата Сообщение от Dolphin0091 Посмотреть сообщение
Зачем(в каких случаях) использовать string...
string - класс с автоматическим управлением памяти, что позволяет не думать о выделении памяти под размер строки.
1
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 11
18.01.2016, 17:01  [ТС]
Спасибо всем, за объяснение, мне стало понятно...
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.01.2016, 17:20
Лучший ответ Сообщение было отмечено Dolphin0091 как решение

Решение

char - для символа. один символ

char* используют в двух вариантах
char* с new/delete ==> массив символов. Можно модифицировать этот массив.
char* без new/delete ==> массив символов, модифицировать который нельзя

string - Это класс "Строка". Имеет много собственных возможностей, которых нет у char*. Это как сильно усовершенствованный char* с new.

Если нужна строка, используй string
Если нужен массив символов используй char* или char* с new (зависит от необходимости модификаций)
Если нужен просто символ, используй char, хотя иногда еще char используют если нужно число.

массив символов отличается от строки тем, что в нем нет признака окончания. Это такая строка, у которой конец в лотерейном месте.

некоторые функции требуют как параметр char*, тогда если у тебя string S, то отдавай в функцию S.c_str();

char* - это указатель.
string - это объект класса.
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
18.01.2016, 18:56
Цитата Сообщение от daslex Посмотреть сообщение
char* без new/delete ==> массив символов, модифицировать который нельзя
Что?
C++
1
2
char a[10];
char *b=a;
Модифицируйте на здоровье.
Цитата Сообщение от daslex Посмотреть сообщение
массив символов отличается от строки тем, что в нем нет признака окончания. Это такая строка, у которой конец в лотерейном месте.
Вы, случайно, строки со строковыми литералами не путаете?
2
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.01.2016, 19:14
Цитата Сообщение от avgoor Посмотреть сообщение
Вы, случайно, строки со строковыми литералами не путаете?
где я писал о char[]

о char[] не написано потому как у ТС его в тексте нет. И то, что у Вас указатель на модифицирующийся массив мало что меняет.

Но у меня имеет место неточность в выссказывании. Да, не договорил, что char* когда он не const char* может указывать на разные Си строки или массивы символов, которые в свою очередь можно менять. А не договорил, чтобы не путать человека.

И у string есть признак окончания и у Си строк есть признак окончания. Ничего не путаю. А то, что они отличаются по природе, погоды не делает.
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
18.01.2016, 19:15
Цитата Сообщение от daslex Посмотреть сообщение
где я писал о char[]
Тогда что сие означает?
Цитата Сообщение от avgoor Посмотреть сообщение
char* без new/delete ==> массив символов, модифицировать который нельзя
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
18.01.2016, 19:17
Это означает, что я говорил о const char*, когда const неявен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2016, 19:17
Помогаю со студенческими работами здесь

Static обьект, в каких случаях применяется?
Всем доброго дня ! Скажите пожалуйста в каком случае применяются статические обьекты.? class A { int x;

В каких случаях требуется работа с памятью?
Приветствую всех. Интересует такой вопрос. Я знаком с основами C++. Но я читал где-то, что если разрабатывается большой проект, то работы...

Так в каких случаях стоит использовать наследование?
Здравствуйте, уважаемое сообщество. После прочтения &quot;C++ Coding Standards&quot; by Herb Sutter and Andrei Alexandrescu, возникли некоторые...

Написать, в каких случаях не используется конструктор копирования
2)Написать, в каких случаях не используется конструктор копирования

В каких случаях оправданно использование локальных классов?
Здравствуйте. Вопрос: в каких случаях оправданно использование локальных классов? Или когда нужно использовать локальные классы? Какие есть...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru