More actions
imported>Unknown No edit summary |
(Repair batch-0003 pages from live compare) |
||
| Line 11: | Line 11: | ||
private: | private: | ||
enum {LEN=70}; | enum {LEN=70}; | ||
char st | char st[LEN]; | ||
int n; | int n; | ||
void n_set() {n=0;}//n의 값을 0으로 초기화 | void n_set() {n=0;}//n의 값을 0으로 초기화 | ||
void lenstr() {while(st | void lenstr() {while(st[n]!='\0') n++;}//문자열의 길이를 n값으로 저장 | ||
public: | public: | ||
String(); | String(); | ||
| Line 41: | Line 41: | ||
{ | { | ||
n_set(); | n_set(); | ||
st | st[0]='\0'; | ||
} | } | ||
String::String(const char *in_st) | String::String(const char *in_st) | ||
| Line 55: | Line 55: | ||
{ | { | ||
while(st | while(st[n]='\0') | ||
{ n++;} | { n++;} | ||
| Line 63: | Line 63: | ||
{ | { | ||
int k=nval(); | int k=nval(); | ||
char *temp=new char | char *temp=new char[k+2]; | ||
strncpy(temp,st,k+2); | strncpy(temp,st,k+2); | ||
for(int i=0;i<k;i++) | for(int i=0;i<k;i++) | ||
{ | { | ||
st | st[i]=temp[k-i-1]; | ||
st | st[k-i-1]=temp[i]; | ||
} | } | ||
delete | delete [] temp;//이부분에서 고생 했쓰... | ||
} | } | ||
int String::search(char se) | int String::search(char se) | ||
| Line 77: | Line 77: | ||
for(int i=0;i<n;i++) | for(int i=0;i<n;i++) | ||
{ | { | ||
if(st | if(st[i]==se) | ||
number++; | number++; | ||
} | } | ||
| Line 86: | Line 86: | ||
for(int i=0;i<n;i++) | for(int i=0;i<n;i++) | ||
{ | { | ||
if(st | if(st[i]==' ') | ||
for(int j=i;j<n;j++) | for(int j=i;j<n;j++) | ||
st | st[j]=st[j+1]; | ||
} | } | ||
n_set(); | n_set(); | ||
| Line 98: | Line 98: | ||
strncpy(sum.st,st,n); | strncpy(sum.st,st,n); | ||
for(int i=0;i<s.nval();i++) | for(int i=0;i<s.nval();i++) | ||
sum.st | sum.st[n+i]=s.st[i]; | ||
int n1=s.nval();//에스 객체의 길이; | int n1=s.nval();//에스 객체의 길이; | ||
sum.st | sum.st[n+n1]='\0';//쓰레기 처리하기.. | ||
return sum; | return sum; | ||
| Line 137: | Line 137: | ||
return 0; | return 0; | ||
} | } | ||
Latest revision as of 00:29, 27 March 2026
작성자
- 01 남상협
소스
String0.h
//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
String0.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;
}
usestring.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;
}