powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
12 сообщений из 12, страница 1 из 1
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32950309
Relaxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здраствуйте мастера С++!!!
Я недавно начал углубленно изучать С++, набрался книг, статей, исходников и всего такого. С самим синтаксисом С я немного знаком и простенькие вещи писал уже давно. Вот по ходу учебы возникла такая вот проблема, помогите если не сложно.

В MFC есть такой тип данных как CString, я во первых не знаю как с ним работать толком, например у меня возникла такая проблема, у меня переменная объявлена как CString, а в функцию нужно передать как параметр как раз эту переменную, но в фунции этот параметр объявлен как "unsigned char *", как преобразовать я незнаю, что мне делать в данной ситуации???
Еще я столкнулся с таким типом как std::string что это за рыба, чем он отличается от CString, где о них можно почитать кроме MSDN.

Это был первый вопрос, а вот теперь поинтересней вопрос(покрайне мере для меня).
Я пишу маленькую библиотеку(пока маленькую :), но она должна использоваться в разных операционных системах, и мне опять нужен тип string, но CString уже не подходит, как и std::string. Покажите мна маленький примерчик или укажите где поискать, как мне написать маленький класс-тип каторый я мог бы использовать как символьную переменную и например как в этом классе-типе создать функцию которая покажет количество символов в переменной, а дальше я уже думаю смогу напихать этот класс-тип разными функциями???

Заранее спасибо за попытки помочь!!!
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32950316
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написание хорошего класса для строк - нетривиальная задача, поэтому не лучше ли сначала ознакомиться с тем, что уже есть.

В частности, std::string - это класс из STL. Сл., надо смотреть в док. по STL (есть и книги). В учебнике по С++ тоже может быть кратко описан. STL не относится специально к VC, а доступно для разных трансляторов и разных операционных систем. Например, можно использовать с BCB в Windows или с GCC в Linux.
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32950575
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Страуструпа "Язык программирования C++" есть пример простейшеного my_string, у Мейерса разжованы различные подходы к реализации string в "Эффективном использовании STL".

ps: а чем Вам std::string не кроссплатформенное решение?
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32950912
Guest123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CString( const unsigned char* psz );
//------------------------------------

CString s( "abcd" );
LPTSTR p = s.GetBuffer( s.GetLength() );
s.ReleaseBuffer( );
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32950985
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
Я бы еще обратил внимание на flex_string Александреску, так же его враппер строки представленной через вектор. Во флексе, есть "подстраивание" под размер строки. Так же там используется фокус под наименованием "перемещающий конструктор".
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32951116
Интегратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwlЯ бы еще обратил внимание на flex_string Александреску, так же его враппер строки представленной через вектор. Во флексе, есть "подстраивание" под размер строки. Так же там используется фокус под наименованием "перемещающий конструктор".

Советовать Александреску новичку - крафне разумное решение :) Его и опытному то советовать неразумно...

Автору:

Чем не устраивает std::string ? Кроссплатформенный, стандартный ... Давайте конкретику - может сможем подсказать как его граммотно использовать :)
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32952322
KWladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
std :: string - самый кросплатформенный вариант, т.к. STL - часть стандарта C++.
Лично я свой класс строки делал как надстройку над std :: string, реализующие методы типа AnsiStringовских (т.е. в нём есть private: std :: string m_Data).
Ничего пока, вроде работает.
Если речь идёт не об офисных программах, а об утилитах (где не нужны наворочанные форматные преобразования), то имхо лучше всего брать std::string - как самую стандартную.
Если напишешь свой класс (через new[] или malloc) - проверь в цикле его быстродействие и std::string...
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32953960
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
Быстродействие операций std::string не стандартизовано, как и не стандартизована реализация, т.е. хранение строки. Помнится раньше встречались "кусочные" реализации std::string. В то время, как быстродействие многих алгоритмов обработки контейнеров STL стандартизовано. Я имею ввиду быстройдествие выраженное через "О БОЛЬШОЕ".

Это такое небольшое примечание, когда речь заходит о переносимости. Так что, если писать "тренировочный" класс String, то наверное для упрощения себе же жизни, проще взят за основу vector<char> и "скопировать" нужную часть интерфейса std::string, реализовав ее посредством стандартных алгоритмов. Именно так сделано у Александреску во враппере vector<char> ничего сложного в этом классе нету. Отталкиваясь от vector<char> "тренирующийся" может не сильно вдаваться в тонкости работы с динамической памятью и безопасностью реализации оператора =. Заодно ознакомится с интерфейсом вектора и стандартными алгоритмами. ИМХО.
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32954491
KWladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwlБыстродействие операций std::string не стандартизовано, как и не стандартизована реализация, т.е. хранение строки.
Имею в виду реализацию STLPort (stlport.org).
Портирована практически на всё, насколько мне известно.

dwlпроще взять за основу vector<char> и "скопировать" нужную часть интерфейса std::string, реализовав ее посредством стандартных алгоритмов.

Проще? При уже готовой std::string?

Хотя если для тренировки - почему бы и нет.
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32954507
Relaxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за просвящение меня неопытного :)
Вот я обьявил переменную типа std:string, теперь мне опять нужно привести ее к типу unsigned char*, опять таки как? И еще а как мне создать свой тип который бы имел все свойства std:string, тоесть был его наследником и дописать в уже созданый мой тип функцию преобразования его в unsigned char??? И вообще кто-то может поделится ссылками где можно почитать такого рода информацию, интересуют любые преобразования с одного типа в другой!
Спасибо!!!
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32954948
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

unsigned char*,


если
std::string s;

то
s.c_str () даёт доступ к содержащейся внутри строке символов с стиле С,
напр., можно писать printf ("%s", s.c_str ());
К unsigned char преобразуй как обычно.
Для UNICODE строк есть std::wstring
...
Рейтинг: 0 / 0
Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
    #32955174
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
для получения массива символов ты можешь захотеть воспользоваться .data()(для многих STL он будет ASCIZ, а для некоторых нет). Хочу предостеречь, т.к. реализация строки не стандартизована, то лучше не пользоваться решениями ориентированными на непрерывный массив. Пример, если считать что строка есть непрерывный участок памяти, то аналоги c_str могут быть таким (в зависимости от реализаций) str.data(), &str[0], &*str.begin().

Последние два метода "скопированы" из std::vector, но если там они правомочны, то для строки подобное обращение может быть чреватым. Это так, к слову... Подробнее в С.Майерс "Эффективное использование STL"

Насчет преобразований лучше почитать книжку "дедушки Бьёрна". Следует иметь ввиду, что есть старые Си преобразования, новые static_cast & etc, и оператор приведения к типу. Чтобы понять неявные преобразования лучше разобраться с конструкторами и деструкторами, "появлением" временных объектов, и некоторые другие тонкости(модификаторы доступа const). Об этом лучше прочесть в Г.Саттер "Exceptional C++" не помню как на русском перевели, кажется "решение сложных задач на С++".
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Тип string, несколько вопросов! Помогите написать свой класс-тип MyString
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]