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

class Anystring 
{ 
private:
	int count; 
	char str[30]; 
public: 
	Anystring();
	Anystring(const char*);
	~Anystring();
	void str_length(); //길이 측정 
	void str_reverse(); //문자열 뒤집기 
	void str_count_same_char(); //같은 문자를 찾기 
	void str_delete_white_space(); //빈칸 지우기 
	Anystring operator+(const Anystring &string1); //const;
	// +연산자 재정의해서 문자열 합치기 
	friend ostream& operator<<(ostream & os, const Anystring & a_string);
	// <<연산자 재정의해서 문자열 출력하기
}; 
Anystring::Anystring()
{
	str[0]='';
}
Anystring::Anystring(const char* tempstr)
{
	strncpy(str, tempstr, 30);
}
Anystring::~Anystring()
{
}
void Anystring::str_length() 
{ 
	count=0; 
	while(str[count]!='') 
		count++; 
	cout<<"문자열의 길이는 "<<count<<"이다."<<endl; 
} 
void Anystring::str_reverse() 
{ 
	count=0; 
	while(str[count]!='') 
		count++;
	while(count!=0){
		cout<<str[count-1];
		count--;
	}
} 
void Anystring::str_count_same_char() 
{ 
	count=0; 
	char input_char; 
	cout<<"검색할 문자를 쓰시오: "; 
	cin>>input_char; 
	cout<<input_char<<"n"; 
	for(int i=0;i<30;i++){ 
		if(str[i]==input_char) 
	count++; 
} 
	cout<<input_char<<"는 문자열 안에 "<<count<<"개 있다."<<endl; 
} 
void Anystring::str_delete_white_space() 
{ 
	count=0; 
	while(str[count]!='') 
		count++;
	for(int i=0;i<30;i++){
		if(str[i]==' '){
			for(int j=i;j<count;j++)
				str[j]=str[j+1];
		}
	}
	cout<<str<<endl;
} 
Anystring Anystring::operator+(const Anystring &string1) //const
{
	count=0; 
	while(str[count]!='') 
		count++;
	Anystring temp_string;
	strncpy(temp_string.str, str, 30);
	int i=0;
	while(string1.str[i]!=''){
		temp_string.str[count+i]=string1.str[i];
		i++;
	}
	
	return temp_string;
}
ostream& operator<<(ostream& os, const Anystring & a_string)
{
	os<<a_string.str<<endl;
	return os;
}

int main() 
{ 
	int input; 
	Anystring string0("asdf asdf");
	Anystring string1("qwer qwer");
	Anystring temp_string;
	cout<<"==========String Of C++====================="<<endl; 
	cout<<"1. 문자열 길이를 알아내는 기능"<<endl; 
	cout<<"2. 문자열을 거꾸로 만들어 주는 기능"<<endl; 
	cout<<"3. 찾고자 하는 문자의 갯수를 알려 주는 기능"<<endl; 
	cout<<"4. 문자열에 있는 여백을 지워주는 기능"<<endl; 
	cout<<"5. + 연산자를 재정의 하여 문자열을 합치기"<<endl; 
	cout<<"6. <<연산자를 재정의하여 문자열 출력하기"<<endl; 
	cout<<"============================================"<<endl; 
	cout<<"사용할 메뉴의 번호는?(7을 누르면 종료): "; 
	cin>>input; 
	switch(input) 
	{ 
		case 1: 
			string0.str_length(); 
			break; 
		case 2: 
			string0.str_reverse(); 
			break; 
		case 3: 
			string0.str_count_same_char(); 
			break; 
		case 4: 
			string0.str_delete_white_space(); 
			break; 
		case 5:
			temp_string=string0+string1;
			cout<<temp_string;
			break; 
		case 6: 
			cout<<string0;
			break; 
		default: 
			break; 
	} 
	cout<<"종료합니다.n";
	return 0; 
} 
----
작성자: Yggdrasil
----
StringOfCPlusPlus
Retrieved from http://wiki.zeropage.org/wiki.php/StringOfCPlusPlus/영동
last modified 2021-02-07 05:28:07