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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 18:38   #1
sawyer1988
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 36
По умолчанию Перегрузка операции ввода

Добрый день.Подскажите как ввести объект-строку с пробелами в данном классе.

Код:
#include <iostream>

using namespace std;

class base{

char*str;
public:
	
	base(char* s)
	{	
	cout<<"konstruktor"<<endl;
	str=new char[100];
	  }
	~base(){
	cout<<"destruktor bas"<<endl;
    delete[]str;
	}
	base(const base &o){
		cout<<"copy"<<endl;
	str=new char[100];
	strcpy(str,o.str);
	
	}
	
	friend ostream &operator<<(ostream &stream, base &ob)
		{
stream<<ob.str<<endl;
return stream;
}

	friend istream &operator>>(istream &stream, base &ob)
		{
cout<<"vvedite stroku"<<endl;

stream>>ob.str;
return stream;
}


};


void main(void)

{ 

base ob("stroka");
cin>>ob;
cout<<ob<<endl;

getchar();
getchar();
}

Последний раз редактировалось Stilet; 21.04.2012 в 20:19.
sawyer1988 вне форума Ответить с цитированием
Старый 21.04.2012, 19:35   #2
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Цитата:
Сообщение от sawyer1988 Посмотреть сообщение
friend ostream &operator<<(ostream &stream, base &ob)
{
stream<<ob.str<<endl;
return stream;
}

friend istream &operator>>(istream &stream, base &ob)
{
cout<<"vvedite stroku"<<endl;

stream>>ob.str;
return stream;
}
};

}

В данном случае нужно писать не stream>>ob.str; в вводе, а cin.getline(ob.str, sizeof(ob.str));, если вам нужны пробелы,
и не strem<<ob.str<<endl; в выводе, а cout<<ob.str<<endl;.
Возможно вывод будет работать (не проверяла), но обычно в таких случаях пишут cout.
rmv240899 вне форума Ответить с цитированием
Старый 21.04.2012, 19:55   #3
sawyer1988
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 36
По умолчанию

не помогло.
sawyer1988 вне форума Ответить с цитированием
Старый 22.04.2012, 00:53   #4
SergeyCh
Пользователь
 
Регистрация: 22.04.2012
Сообщений: 27
По умолчанию

Используй std::string вместо char[] -

Код:
int main() {
  std::string name, title;

  std::cout << "Enter your name: ";
  std::getline(std::cin, name);

  std::cout << "Enter your favourite movie: ";
  std::getline(std::cin, title);

  std::cout << name << "'s favourite movie is " << title;
}

Последний раз редактировалось ACE Valery; 22.04.2012 в 19:25.
SergeyCh вне форума Ответить с цитированием
Старый 22.04.2012, 09:21   #5
sawyer1988
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 36
По умолчанию

Пасибо, я убрал перегрузку ввода , вот что в мейне:

Код:
void main(void)

{

char*u=new char[100];
cout<<"vvedite stroku"<<endl;
cin.get(u,100);

base ob(u);
cout<<ob<<endl;

getchar();
getchar();
}

Последний раз редактировалось ACE Valery; 22.04.2012 в 19:25.
sawyer1988 вне форума Ответить с цитированием
Старый 22.04.2012, 11:59   #6
sawyer1988
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 36
По умолчанию

Почему без cin.get() не работает?

Код:
void main(void)

{
	int x;
m:
	cout<<"vvedite 1 dlia sozdania stroki"<<endl; 
	cin>>x;
if(x==1)
{
char*u=new char[100];
cout<<"vvedite stroku"<<endl;

cin.get();
cin.getline(u,100);

base ob(u);
cout<<ob<<endl;
}


else
{
cout<<"nepravilno"<<endl;
goto m;
}

getchar();


}

Последний раз редактировалось ACE Valery; 22.04.2012 в 19:25.
sawyer1988 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операции Evgen.O C++ Builder 0 11.12.2011 17:42
Перегрузка оператора ввода Anubys Общие вопросы C/C++ 3 07.11.2011 23:08
Перегрузка ввода ruPy Помощь студентам 0 22.01.2011 17:54
перегрузка операции со счетом zhenya.ya Общие вопросы C/C++ 0 03.10.2010 23:52
Перегрузка ввода MaTBeu Общие вопросы C/C++ 9 23.12.2007 16:22