[42Seoul] CPP0042 Seoul2022. 6. 13. 16:58
Table of Contents
General rules ▼
더보기
General rules
플래그 -Wall -Wextra -Werror -std=c++98
클래스 이름을 UpperCamelCase 형식으로 작성 (ClassName.tpp 와 같은...)
사용 금지 : *printf(), *free 및 free()
메모리 누수 방지
STL in Module 08 을 사용
(no Containers (vector/list/map/and so forth) and no Algorithms (anything that requires to include the header))
ex00 하면서 사용된 것이지만, 미리 숙지 하면 좋을 것
Naming Convention in C++
Exercise 00 : Megaphone
C 같이 만들었다가 juhur의 조언대로 CPP 스러운 코드로 변경을 하였다.
std::string
타입의 변수를 지정하거나 값을 지정 혹은 값을 할당할 수 있다.
#include <string>
std::string cadetId;
std::string cadetId("jaewpark");
cadetId = "jaewoopark"
toupper
주어진 문자를 대문자로 변환, 반환값은 int
- 알파벳의 경우 - 대문자 버전의 ASCII 코드채널
- 알파벳이 아닌 경우 - ASCII 코드채널
std::endl 보다는 << '\n' 속도 면에서 더 빠르다
그리고 사용했던 push_back 허용된 버전보다 상위 버전이라서 사용을 하면 안됨... 사용할 때, 언제 나온 건지 레퍼런스를 참고해야 한다
정확히는 버전 20에서 변경된 부분이 있어, 기존에 쓰였던 것과 동일하게 사용하면 됨(c++98 push_back)
Exercise 01 My Awesome PhoneBook
- 프로그램 시작할 때 전화번호부는 비어있고 사용자는 세 가지 명령 중 하나를 입력하라는 메시지를 받는다. ADD, SEARCH 그리고 EXIT
- 전화번호부와 연락처에 대한 클래스를 구현
- 전화번호부 및 연락터는 클래스의 인스턴스로 인스턴스화
- 제공된 입력이 아닌 다른 입력은 삭제
PhoneBook
- 연락처에 대한 배열이 존재
- 최대 8개까지 저장 가능
- 9번째 연락처가 추가될 시 가장 오래된 연락처를 새 연락처와 변경
- 동적 할당 금지
Contact
- 전화번호부 연락처
Add : 새 연락처 저장
- 사용자가 명령 입력 시, 연락처의 정보를 한 번에 한 필드씩 입력하도록 메시지 출력
- 모든 필드 입력 받았을 시, 전화번호부에 추가 (필드가 공백 불가)
- 연락처의 필드는 first name, last name, nickname, phone number 그리고 darkest secret
Search : 특정 연락처 표시
- 저장된 연락처를 index, first name, last name 그리고 nickname으로 4개의 열 이루어진 목록 출력
각 열의 너비는 10자, - 파이프 문자로 구분
- 오른쪽 정렬
- 텍스트가 10자를 넘어서면 "."으로 대체
- 출력된 후, 다시 입력하라는 메시지 표시
- index를 벗어나거나 잘못된 경우 관련 동작을 정의
- 그렇지 않은 경우 한줄에 하나의 필드씩 연락처 정보를 표시
Exit
- 프로그램이 종료
- 저장된 연락처 삭제
출력 작업에 사용할 필드의 너비를 설정 그리고 설정된 너비를 어떠한 문자로 채울 지 정하는 함수
생성자
- 객체의 생성과 동시에 멤버 변수를 초기화해주는 생성자(constructor)라는 멤버 함수를 제공하며, 클래스 생성자(constructor)의 이름은 해당 클래스의 이름과 같습니다.
- 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있습니다.
- 생성자는 반환값이 없지만, void형으로 선언하지 않습니다.
- 객체를 초기화하는 방법이 여러 개 존재할 경우에는 오버로딩 규칙에 따라 여러 개의 생성자를 가질 수 있습니다.
소멸자
- 생성자의 반대 역할로 사용이 끝난 객체를 정리
- 소멸자는 인수를 가지지 않습니다.
- 소멸자는 반환값이 없지만 void형으로 선언하지 않습니다.
- 객체는 여러 개의 생성자를 가질 수 있지만, 소멸자는 단 하나만 가질 수 있습니다.
- 소멸자는 const, volatile 또는 static으로 선언될 수는 없지만, const, volatile 또는 static으로 선언된 객체의 소멸을 위해서 호출될 수는 있습니다.
클래스의 생성자/소멸자 선언
Book::Book() {
title = "";
total_page = "";
}
Book::~Book() { }
string 을 char *로
string str = "It's rainning";
const char* str2 = str.c_str();
char *를 int 로
char* str = "20220616";
int date = atoi(str);
string에서 char * 그리고 int
string yearYear = "20022022";
int num = atoi(yearYear.c_str());
string 라이브러리의 getline()
- 최대 문자 수를 입력하지 않아도 되며, 원하는 구분자를 만날 때까지 모든 문자열을 입력받아 하나의 string 객체에 저장
getline(istream& is, string& str, char delim);
getline(istream& is, string& str);
// 사용
std::string name;
std::getline(std::cin, name);
'42 Seoul' 카테고리의 다른 글
[NetPractice] 네트워킹 계산 (0) | 2022.07.07 |
---|---|
[cub3D] raycasting (0) | 2022.07.04 |
[42Seoul/특강] 멘토 차경묵(@Hannal), 프론트엔드 개발자 김승하 (4) | 2022.05.13 |
[42seoul] 용량 부족하니 다 밀어보자 (0) | 2022.04.22 |
[42Seoul/Philosophers] 이번만큼은 살인자가 되었다 (0) | 2022.04.06 |
@jaewpark :: 코스모스, 봄보다는 늦을지언정 가을에 피어나다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!