Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
abreusleo

C++ Sobrecarga de operadores com String em C++.

Recommended Posts

Oi, gente. Preciso fazer uma sobrecarga dos operadores de adição e igualdade com Strings, mas não estou conseguindo. Quando eu realizo o print, recebo "════════²²²²tchau" em vez de "oitchau". Alguem pode me ajudar? Peço perdão por algum erro básico ou algo do gênero, obrigado desde já.
 

#include <iostream>
#include <string.h>

static const int strSize = 1024;

class Strings {
private:
	char* string_;
	size_t length_;

public:
	Strings();
	Strings(const char* s);
	Strings(const Strings& s);
	~Strings() { delete[] string_; };

	const char * GetStr() const { return string_; };

	void SetStr() {
		if (string_ != nullptr) {
			delete[] string_;
		}
		char buffer[strSize];
		std::cin.getline(buffer, strSize);
		length_ = strlen(buffer) + 1;
		string_ = new char[length_];
		strcpy(string_, buffer);
	}
	Strings&operator+(const Strings&);
	Strings&operator=(const Strings&);

	operator char*() { return string_; };

};

Strings::Strings() {
	string_ = nullptr;
	length_ = 0;
}

Strings::Strings(const char* string) : length_{ strlen(string) }, string_{ new char[length_ + 1] } {
	strcpy(string_, string);
}

Strings::Strings(const Strings& string) {
	length_ = string.length_;
	string_ = new char[length_ + 1];
	strcpy(string_, string.string_);
}

Strings& Strings::operator=(const Strings & string) {
	if (this == &string)
		return *this;
	if (length_ != string.length_ || length_ == 0) {
		delete[] string_;
		length_ = string.length_;
		string_ = new char[length_ + 1];
	}
	strcpy(string_, string.string_);
	return *this;
}

Strings& Strings::operator+(const Strings & string) {
	length_ = length_ + string.length_;
	string_ = new char[length_ + 1];
	strcat(string_, string.string_);
	return *this;
}


int main() {
	Strings s("oi");
	Strings s2("tchau");

	Strings s3(s + s2);
	printf("%s", s3);

	delete[] s2;
	delete[] s;

	return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×