Страница 1 из 1
Поменять первые слова строки
Добавлено: 02 дек 2015, 17:33
drweb1807
Функцию вывода содержимого объекта реализовать как внешнюю по отношению к классу
Задача 1 . Создать 2 объекта разработанного класса. Одной из компонент класса является символьная строка. В результате выполнения программы в обоих объектах поменять первые слова строки. Содержимое объектов (их строки) до и после обмена вывести на экран.
Кто сможет чем помочь. Буду признателен.
Я так понимаю в обоих объектах нужно заменить первые слова другими словами строк.
Программу реализовать на C++
Re: Поменять первые слова строки
Добавлено: 03 дек 2015, 11:12
Din666
это ты сам такое ТЗ придумал )))) ?
Re: Поменять первые слова строки
Добавлено: 03 дек 2015, 11:30
Romeo
Din666, походу да
drweb1807, а в чём именно проблема? Судя по описанию, в классе должен быть метод, получающий не константную ссылку на объект этого же класса.
Код: Выделить всё
#include <iostream>
#include <string>
class CStringHolder
{
public:
CStringHolder(const std::string& str) : m_str(str)
{
}
void SwapFirstWords(CStringHolder& anotherHolder)
{
// Code here to swap first words between m_str and anotherHolder.m_str
}
void Show() const
{
std::cout << m_str << std::endl;
}
private:
std::string m_str;
};
int main()
{
CStringHolder str1("Hello String Holder");
CStringHolder str2("Goodby");
str1.Show();
str2.Show();
str1.SwapFirstWords(str2);
str1.Show();
str2.Show();
return 0;
}
Имплементацию метода SwapFirstWords оставляю тебе в качестве самостоятельной работы
P.S. В коде могут быть неточности, так как писал прямо сюда и компилировать не пробовал.
Re: Поменять первые слова строки
Добавлено: 03 дек 2015, 12:13
Din666
Функцию вывода содержимого объекта реализовать как внешнюю по отношению к классу.
Код: Выделить всё
....................
public:
...................
const std::string & getStr() const {return m_str;}
private:
...................
};
static void Show(const CStringHolder & holder) { std::cout << holder.getStr() << std::endl;}
int main() {
...........
Show(str1);
Show(str2);
................
................
Возможно это имелось ввиду
Re: Поменять первые слова строки
Добавлено: 03 дек 2015, 12:44
Romeo
Я что-то пропустил про внешнюю функцию вывода. Тогда будет удобнее даже вот так (хоть это и не функция, а оператор):
Код: Выделить всё
class CStringHolder
{
friend std: :o stream& operator<<(std: :o stream& os, const CStringHolder& holder);
...
};
std: :o stream& operator<<(std: :o stream& os, const CStringHolder& holder)
{
os << holder.m_str;
return os;
}
int main()
{
...
std::cout << str1 << std::endl;
std::cout << str2 << std::endl;
}
Re: Поменять первые слова строки
Добавлено: 03 дек 2015, 13:22
Din666
да так очень красиво, но боюсь что будет сразу видно, что Студент не сам делал )))
Re: Поменять первые слова строки
Добавлено: 04 дек 2015, 21:38
Romeo
Пропал наш студен. Испугался умных слов.
А может просто запостил на десяток форумов эту задачу, и на одном из форумов ему уже решили её, и сюда он больше никогда в жизни не заглянет. Такое я тоже встречал.
Re: Поменять первые слова строки
Добавлено: 07 дек 2015, 09:43
Din666
Логично, но все равно хорошо что есть решение, может еще кому пригодится.