170 похожих чатов

А как в перегруженном операторе ввода сделать ввод не на

1024 символа, а на такое количество символов, которое ввел пользователь?

class MyString
{
private:
char* str;
public:
//конструктор по-умолчанию
MyString();
//конструктор инициализации
MyString(const char* str);
//конструктор копирования
MyString(const MyString& object);
//деструктор для освобождения памяти
~MyString();

//перегрузка оператор присваивания=
//friend MyString& operator=(const MyString& object);

MyString& operator =(const MyString& object);

//перегрузка оператора вывода <<
friend std::ostream& operator <<(std::ostream& output, const MyString& object);
//перегрузка оператора ввода >>
friend std::istream& operator >>(std::istream& input, MyString& object);
};

//конструктор по-умолчанию
MyString::MyString() :str{ nullptr }{}

//конструктор инициализации
MyString::MyString(const char* str)
{
int lenght = strlen(str);
this->str= new char[lenght + 1]; //выделяем память под строку и под завершающий символ '\0'

for (int i = 0; i < lenght; ++i)
{
this->str[i] = str[i]; //посимвольное присваивание строки
}

this->str[lenght] = '\0'; //указание на окончание строки
}

//конструктор копирования
MyString::MyString(const MyString& object)
{
if (this->str != nullptr)
{
delete[] str;
}
int lenght = strlen(object.str);
this->str = new char[lenght + 1]; //выделяем память под строку и под завершающий символ '\0'

for (int i = 0; i < lenght; ++i)
{
this->str[i] = object.str[i]; //посимвольное присваивание строки
}

this->str[lenght] = '\0'; //указание на окончание строки
}

//деструктор для освобождения памяти
MyString::~MyString() { delete[] str; }

//перегруженный оператор вывода <<
std::ostream& operator <<(std::ostream& output, const MyString& object)
{
if (object.str == nullptr)
{
return output;
}
else
{
return output << object.str;
}
}

//перегруженный оператор ввода >>
std::istream& operator >>(std::istream& input, MyString& object)
{
char* tmpStr = new char[1024];
input >> tmpStr;

int len = strlen(tmpStr);
object.str = new char[len + 1];

for (int i = 0; i <= len; ++i)
{
object.str[i] = tmpStr[i];
}

delete[] tmpStr;
object.str[len] = '\0';
return input;
}

//перегруженный оператор присваивания =
MyString& MyString::operator =(const MyString &object)
{
if (this->str != nullptr)
{
delete[] this->str;
}

int lenght = strlen(object.str);
this->str = new char[lenght + 1];

for (int i = 0; i <= lenght; i++)
{
this->str[i] = object.str[i];
}

this->str[lenght] = '\0';

return *this;
}

int main()
{
MyString s1 = "Hello";
std::cout << "First string: " << s1 << std::endl;

MyString s2;
std::cin >> s2;
std::cout << "Second string: " << s2 << std::endl;

return 0;
}

1 ответов

5 просмотров

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

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Доброе утро! Не совсем понятно как установить счетчик яндекс метрики на сайт. И потом ещё цели проставить?
Евгения
18
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Кто-нибудь знает, как считается нагрузка на цпу? И что такое вообще "нагрузка на цпу"? вот, например, есть у цпу какой-то clock, настроенный на 3 ГГц --- Что значит "нагрузка...
Toideng
15
Можно ли написать свою библиотеку "socket" на каком либо языке ассемблера с нуля не используя сишние библиотеки ? Или это самоубийство ?
123🪐
15
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Карта сайта