Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2009, 12:47   #1
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию Упрощение работы со строками

Недавно я начал изучать С++ (С++ Builder 2009), до этого изучал делфи , тут http://programmersclub.ru/17/ я прочитал про строки . Там пишется что надо объявлять массив char , задавать количество элементов в нем , и в конце писать null. Почему так сложно ? В делфи я объявлял переменую string , память выделяется автоматически , null в конце приделывать не надо. Подскажите , есть ли способ упростить работу со строками в С++ ?
RNT вне форума Ответить с цитированием
Старый 04.08.2009, 12:54   #2
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

В C++ так же есть класс String.

Код:
#include <string> //без .h!

char *cstr = "cstroka"; //С строка
string str1 = cstr; //объявляем строку string и присваиваем ей строку С
string str2 = str1; //объявляем другую строку string и присваиваем ей первую 
printf(str2.c_str()); //обратное преобразование в С строку с помощью c_str()
Управление памятью внутри строки string происходит автоматически.
oleg kutkov вне форума Ответить с цитированием
Старый 04.08.2009, 12:58   #3
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

null в конце писать не надо ?
RNT вне форума Ответить с цитированием
Старый 04.08.2009, 13:05   #4
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Нет, никаких завершающих символов не требуется, вычисление длины строки и управление ею происходит динамически и автоматически.
Возможны так же следующие варианты объявления:
Код:
string str1 = "stroka1";
string str2(stroka2);
Простите, немного ошибся с преобразование из С строки в string, это делается так:

Код:
string str(cstr);
Разумеется исходная С строка должна быть корректной и содержать завершающий нуль.

P.S. Модераторы, удалите пожалуйста дубль сообщения, выше...

Последний раз редактировалось oleg kutkov; 04.08.2009 в 13:16.
oleg kutkov вне форума Ответить с цитированием
Старый 04.08.2009, 13:08   #5
RNT
Пользователь
 
Аватар для RNT
 
Регистрация: 15.09.2008
Сообщений: 59
По умолчанию

Спасибо, буду изучать !
RNT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции и процедуры работы со строками Маськ@ Паскаль, Turbo Pascal, PascalABC.NET 2 15.04.2009 20:10
HELP!Си - программа для работы со строками + сумма строк в матрице! DUPLET Помощь студентам 1 20.12.2007 21:16