모두의 코드: 씹어먹는 C++ <4 - 3 스타크래프트 만들자 ①> 예제 https://modoocode.com/188
#include <iostream>
#include <cstring>
#pragma warning(disable:4996)
class string
{
char* str;
int len;
public:
//constructors
string(char c, int n); //문자 c가 n개 있는 문자열로 정의
string(const char* s);
string(const string& s); //복사생성자
~string(); //소멸자
//instance methods
void add_string(const string& s); //str 뒤에 s를 붙임
void copy_string(const string& s); //str에 s를 복사함
void print_string(); //문자열 프린트
};
int main()
{
string s1('L', 5);
char* str1 = new char[7]; //str1는 레퍼런스가 아닌 포인터
strcpy(str1, "MYLOVE");
string s2(str1);
string s3 = s1;
s1.print_string();
s2.print_string();
s3.print_string();
s1.add_string(s2);
s2.copy_string(s3);
s1.print_string();
s2.print_string();
return 0;
}
string::string(char c, int n)
{
len = n;
str = new char[n + 1];
for (int i = 0; i < n; i++)
{
str[i] = c;
}
str[len] = '\0';
}
string::string(const char* s)
{
delete[]str;
str = new char[strlen(s) + 1];
len = strlen(s);
strcpy(str, s);
}
string::string(const string& s)
{
len = s.len;
str = new char[len + 1];
strcpy(str, s.str);
}
string::~string()
{
if (str) delete[]str;
}
void string::add_string(const string& s)
{
char* tmp = new char[len + 1];
strcpy(tmp, str);
len += s.len;
str = new char[len + 1];
strcpy(str, tmp);
for (int i = 0; i < s.len; i++)
{
str[strlen(tmp) + i] = s.str[i];
}
delete[] tmp;
}
void string::copy_string(const string& s)
{
len = s.len;
str = new char[len + 1];
strcpy(str, s.str);
}
void string::print_string()
{
for (int i = 0; i < len; i++)
{
std::cout << str[i];
}
std::cout << std::endl;
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
객체지향프로그래밍 (0) | 2024.03.06 |
---|---|
C++기본기(2) (4) | 2024.02.29 |
전처리 지시사 (0) | 2024.02.25 |
rand, srand, time을 이용한 난수 생성 (0) | 2024.02.15 |
C++ 기본기(1) (1) | 2024.02.13 |