Ir ao conteúdo
  • Cadastre-se

Lendo string dentro de método de classe (C++)


Emanoel Victor

Posts recomendados

Olá,
 
estou tendo um problema com a leitura de um string dentro de um método da minha classe (que por sinal se chama "String"). A seguir está o código do método:
 

istream &operator>>(istream &C,  String &S){cout<<"Entre com o conteúdo do string: ";cin.getline(S.x, S.size); //S.x ~ char x[] e S.size ~ int size (Parametros do objeto da classe);return C;} 

Estou usando o compilador g++ do ubuntu, portanto a única mensagem de erro que recebo é "segmentation fault (core dumped)". O erro aparece logo após ser impresso na tela a mensagem "Entre com o conteúdo do string", por isso imagino que o problema esteja relacionado ao getline. Se alguem puder me ajudar (e precisar de mais alguma informação), ficarei agradecido.

Link para o comentário
Compartilhar em outros sites

 

 

E nao dava para por o código completo?  :seila:

 

 

Ops, deveria ter feito isso mesmo  :) Segue o código completo:

#include<iostream>#include<string>using namespace std;class String {private:	int size;	char *x;	char c;public:	String();	//construtor default	~String();	friend istream &operator>>(istream &C, String &);	void operator()(const int &, const char &);	friend ostream &operator<<(ostream &, const String &);	void compare(char &);};String::String(){	size=0;	x=NULL;	c=' ';}String::~String(){	if(x!=NULL){	delete[] x;}}void String::operator()(const int &N, const char &C)  //Atribuição de valores aos parametros do objeto da classe{	cout<<"Entrei no operator ()!"<<endl;		if(x!=NULL)delete[] x;	size=N;	x=new char[N];	c=C;}istream &operator>>(istream &C,  String &S){	cout<<"Entre com o conteúdo do string: ";	cin.getline(S.x, S.size);	//S.x ~ char x[] e S.size ~ int size (Parametros do objeto da classe);	return C;}ostream &operator<<(ostream &C, const String &S){	 cout<<S<<endl;	 return C;		//Retorna um ostream para encadear a função <<}void String::compare (char &C)  //Substitui os caracteres iguais ao de C no string por um '_'{	for(int i=0;i<size;i++){	if(x[i]=C)x[i]='_';}}int main(){	String S;	int N;	char x;	cout<<"Entre com o tamanho do string: ";	cin>>N;	cout<<"Entre com o parametro de comparacao do String: ";	cin>>x;	S(N,x);	cin>>S;	S.compare(x);	cout<<S;	return 0;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...