c++ 형변환 질문이요
윤비
조금은 뜬금없는.. 마이크로프로세서 강좌에서 내준 과제인데요;;
그냥 나중에 도움될테니 공부해보라는 취지에서 내준 과제..
C++로 문자열을 처리하는 클래스를 만들어서 어쩌고 저쩌고...;;
그런데 문제중에 인트형의 매개변수를(맞나? 인자인가?;; 이분이 항상 햇갈리네요..ㅠ) 갖는 객체를 생성하면
생성자에서 인트형의 숫자를 스트링형으로 바꿔서 저장해야 될 듯 한데요..
그게 잘 안되네요;;
책이나 인터넷 보니까 atoi()함수를 사용하는 방법도 있고 sprintf()를 사용하는 방법도 있고 여러가지가 있던데..
실행을 시키면 런타임에러가 나와요;;
2008사용중인데.. 군 제대후에 처음 써보는거라 아직 생소하고.. 에러메세지도 못찾겠네요.ㅠㅠ
제가 지금까지 짠 코드 올려볼겠습니다.
#include iostream
#include conio.h
using namespace std;
class String
{
private:
char* cstr;
int len;
public:
String(const char* _cstr=NULL);
String(const String& rstr);
~String();
String operator+(const String& rstr);
String& operator=(const String& rstr);
bool operator==(const String& rstr);
void stringup();
friend ostream& operator(ostream& os, const String& rstr);
};
String::String(const char* _cstr)
{
len=(_cstr!=NULL? strlen(_cstr)+1 : 1);
cstr=new char[len];
if(_cstr!=NULL)
strcpy(cstr, _cstr);
}
String::String(const String& rstr)
{
len=rstr.len;
cstr=new char[len];
strcpy(cstr, rstr.cstr);
}
String::~String()
{
delete []cstr;
}
String String::operator+(const String& rstr)
{
char* temp=new char[len+rstr.len-1];
strcpy(temp, cstr);
strcat(temp, rstr.cstr);
String Temp(temp);
delete []temp;
return Temp;
}
String& String::operator=(const String& rstr)
{
delete []cstr;
len=rstr.len;
cstr=new char[len];
strcpy(cstr, rstr.cstr);
return *this;
}
bool String::operator ==(const String& rstr)
{
if(strcmp(cstr, rstr.cstr))
return true;
else
return false;
}
void String::stringup()
{
strupr(cstr);
}
ostream& operator(ostream& os, const String& rstr)
{
osrstr.cstr;
return os;
}
int main()
{
String str1(I am);
String str2( a boy.);
String str3=str1+str2;
coutstr3endl;
str3.stringup();
coutstr3endl;
getch();
return 0;
}
제생각에는 생성자에서 인트값으로 객체를 생성할 경우 형변환을 해서 그 값을 가지고 있으면 될듯 한데..
흠... 어떤식으로 접근해야 하는지 조언좀 부탁드립니다.ㅠ
-
뽀대미녀
감사합니다^^ 이렇게하니까 되는군요!!
씨뿔뿔 공부 더 열심히해야겠어요.ㅠㅠ -
마리
아차차 연산자 오버로딩이 아니라 생성자 오버 로딩이네요 .,..
-
초엘
연산자 오버로딩으로 처리하심 되지 않나요?
public:
String(const int aNumber) 추가 하시고
String::String(const int aint)
{
\tchar _buffer[100]; //100자리까지 가능
\titoa (aint,_buffer,10);
\tlen=strlen(_buffer)+1;
\tcstr=new char[len];
\tstrcpy(cstr,_buffer);
}
요렇게 하면 나중에 main 에 -
보미나
아.. 참고로 C++은 정식으로 배운적이 없어서... 이 과제 받고 혼자 허겁지겁 공부해서 이만큼 짜봤거든요? 혹시 잘못된 부분이나 필요없는 부분.. 지적해주신다면 행복할꺼같습니다^^ (==연산자 오버로딩은 추후에 쓰려고 미리 짜논거니까 그건 제외하구요^^;)