1. 작성자

  • 01 남상협

2. 소스

2.1. String0.h

~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

2.2. String0.cpp

~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;
}

2.3. usestring.cpp

~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;
}
Retrieved from http://wiki.zeropage.org/wiki.php/StringOfCPlusPlus/상협
last modified 2021-02-07 05:28:07