~cpp //String0.h #ifndef _STRING0_H_ #define _STRING0_H_ class String { private: enum {LEN=70}; char st[LEN]; int n; void n_set() {n=0;}//n의 값을 0으로 초기화 void lenstr() {while(st[n]!='\0') n++;}//문자열의 길이를 n값으로 저장 public: String(); String(const char *in_st); ~String(); char* stval() {return st;}//이걸 알자:배열 전체 리턴 할때 * 사용 .. int nval() const {return n;}//문자열 길이를 알려줌. void reverse();//문자열 거꾸로 int search(char se);//찾고자 하는 문자열의 갯수로 알려줌 void delspace();//여백을 지워 줌 //연산자 재정의 String operator+(const String &s) const; //프렌드 friend ostream& operator<<(ostream &os, String &s); }; #endif
~cpp //String0.cpp #include <iostream> #include <cstring> using namespace std; #include "String0.h" String::String() { n_set(); st[0]='\0'; } String::String(const char *in_st) { n_set(); strncpy(st,in_st,LEN); lenstr(); } String::~String() { } /*String::strlen() const { while(st[n]='\0') { n++;} }*/ void String::reverse() { int k=nval(); char *temp=new char[k+2]; strncpy(temp,st,k+2); for(int i=0;i<k;i++) { st[i]=temp[k-i-1]; st[k-i-1]=temp[i]; } delete [] temp;//이부분에서 고생 했쓰... } int String::search(char se) { int number=0; for(int i=0;i<n;i++) { if(st[i]==se) number++; } return number; } void String::delspace() { for(int i=0;i<n;i++) { if(st[i]==' ') for(int j=i;j<n;j++) st[j]=st[j+1]; } n_set(); lenstr(); } String String::operator +(const String &s) const { String sum; strncpy(sum.st,st,n); for(int i=0;i<s.nval();i++) sum.st[n+i]=s.st[i]; int n1=s.nval();//에스 객체의 길이; sum.st[n+n1]='\0';//쓰레기 처리하기.. return sum; } ostream& operator<<(ostream &os, String &s) { os <<s.stval(); return os; }
~cpp //usestring.cpp #include <iostream> using namespace std; #include "String0.h" int main() { String nam("nam sang boy"); String after=String(" is genius"); cout<<nam<<'\n'; cout<<after<<'\n'<<nam.nval()<<'\n'; String sum=nam+after; cout<<sum<<'\n'; nam.reverse();//끝에것이 짤리고 뒤바뀌지 않는 문제 cout<<nam<<'\n'; cout<<"nam class 중 n의 갯수는 "<<nam.search('n')<<"개 \n"; nam.delspace();//끝에것이 짤리는 문제 cout<<nam<<'\n'; cout<<nam.nval()<<'\n'; String Test("The reverse function work well in English"); cout<<Test<<'\n'; Test.delspace(); cout<<Test<<'\n'; Test.reverse(); cout<<Test<<'\n'; return 0; }