Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 사물인터넷
- Project
- 이웃한 칸
- 프로그래밍
- Reflex
- 개발자
- 개인프로젝트
- backend
- 풀스택프레임워크
- Python
- 코딩테스트
- 자바정리
- 코스닥
- 프로그램
- 빅데이터
- 백준
- 자바독학
- java
- 개발
- SNS
- 자바
- java정리
- 프로그래머스
- C++
- 코테
- 모의 주식
- 코딩
- frontend
- 코딩독학
- 주가예측
Archives
- Today
- Total
Creative Code
main.cpp(string) 본문
※main.cpp파일
#include <iostream>
#include "string.h"
int main()
{
String s1;
String s2 = "hello, world"; // String s2("hello, world");
String s3 = s2; // String s3(s2);
String s4 = "aaa";
String s5 = "bbb";
s1 = s2;
if (s1 == s2) {
std::cout << "s1 and s2 are equal" << std::endl;
} else {
std::cout << "s1 and s2 are not equal"<< std::endl;
}
s1 = s4+s5;
std::cout << "s1 : " << s1.c_str() << std::endl;
std::cout << "s1 len : " << s1.size() << std::endl;
std::cout << "s1 : " << s1 << std::endl;
std::cout << "s2 : " << s2 << std::endl;
std::cout << "s3 : " << s3 << std::endl;
std::cout << "s4 : " << s4 << std::endl;
return 0;
}
※string.h파일
#ifndef STRING_H
#define STRING_H
#include <iostream>
class String {
friend std::ostream& operator<<(std::ostream& out, const String& rhs);
private:
char *str;
int len;
public:
String();
String(const char *str);
String(const String& rhs);
~String();
String& operator=(const String& rhs);
bool operator==(const String& rhs);
const String operator+(const String& rhs);
const char*c_str(); // str값을 리턴
int size();
};
#endif
※string.cpp파일
#include "string.h"
#include <cassert>
#include <cstring>
std::ostream& operator<<(std::ostream& out, const String &rhs) {
out << rhs.str;
return out;
}
String::String() {
this->str = new char[1];
assert(this->str);
this->str[0] = '\0';
this->len = 0;
}
String::String(const char *str){
this->str=new char[strlen(str) + 1]; // '\0'문자도 포함
assert(this->str);
strcpy(this->str,str);
this->len = strlen(str);
}
String::String(const String& rhs){
this->str=new char[strlen(rhs.str) + 1]; // '\0'문자도 포함
assert(this->str);
strcpy(this->str,rhs.str);
this->len = strlen(rhs.str);
}
String::~String(){
delete[] this->str;
}
const char *String::c_str()
{
return this->str;
}
int String::size() {
return this->len;
}
String& String::operator=(const String& rhs) {
delete[] this->str;
this->str = new char[strlen(rhs.str)+1];
assert(this->str);
strcpy(this->str, rhs.str);
this->len = strlen(rhs.str);
return *this;
}
bool String::operator==(const String& rhs) {
return strcmp(this->str,rhs.str) == 0;
}
const String String::operator+(const String& rhs) {
char buf[this->len + rhs.len+1];
strcpy(buf,this->str);
strcat(buf,rhs.str);
String result(buf);
return result;
}
'C++ Programming' 카테고리의 다른 글
main.cpp(컴파일러가 자동생성하는 함수) (0) | 2023.09.01 |
---|---|
main.cpp(string2) (0) | 2023.09.01 |
main.cpp(rational클래스 여러 연산자) (0) | 2023.08.31 |
main.cpp(complex클래스 여러 연산자) (0) | 2023.08.31 |
main.cpp(Rational 사칙연산) (0) | 2023.08.30 |