CPP module 00
ex00
cpp์ ์ ์ถ๋ ฅ์ iostream ์ ์ฌ์ฉํ๋ค!
๊ฐ์ฒด์งํฅ์ธ cpp๋ stdio ๋ณด๋ค ๊ฐ์ฒด์งํฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ iostream์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธํ๋ค.
<<, >>์ ๋์ ํ ์ ์๋ ํ์ ์ด ๋ ๋ค์ํ๊ธฐ ๋๋ฌธ! ๊ฐ์ฒด๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ๋ ํธํ ๊ฒ์ด๋น๋น~
- Makefile์ CC CFLAGS๊ฐ ์๋ CXX CXXFLAGS๋ฅผ ์ฌ์ฉํ๋ ์ด์
- Makefile์ OBJS์์
.c:.o
์ ๊ท์น์ ๋ฐ๋ก ์ ํ์ง ์๊ณOBJS = $(SRCS:.cpp=.o)
๋ก ํ์ ๋ ! ์ปดํ์ผ ์ต์ ์ด ์๋์ผ๋ก ๋ค์ด๊ฐ์ง์ง ์์!!!NAME = phonebook SRCS = main.cpp Contact.cpp PhoneBook.cpp OBJS = $(SRCS:.cpp=.o) CXXFLAGS = -Wall -Wextra -Werror -std=c++98 CXX = c++ #############ํฐ๋ฏธ๋ ๊ฒฐ๊ณผ############### jiyokim@c4r3s3 ex01 % make c++ -Wall -Wextra -Werror -std=c++98 -c -o main.o main.cpp c++ -Wall -Wextra -Werror -std=c++98 -c -o Contact.o Contact.cpp c++ -Wall -Wextra -Werror -std=c++98 -c -o PhoneBook.o PhoneBook.cpp c++ -Wall -Wextra -Werror -std=c++98 main.o Contact.o PhoneBook.o -o phonebook
.c:.o
์ ๊ท์น์ ์ง์ ํด๋จ๋ค๋ฉด ์๊ด์์ง๋งcxx
cxxflags
๊ฐ ๊ตญ๋ฃฐ์ธ ๋๋โฆ? NAME = phonebook SRCS = main.cpp Contact.cpp PhoneBook.cpp OBJS = $(SRCS:.cpp=.o) CFLAGS = -Wall -Wextra -Werror -std=c++98 CC = c++ #############ํฐ๋ฏธ๋ ๊ฒฐ๊ณผ################# jiyokim@c4r3s3 ex01 % make c++ -c -o main.o main.cpp # ๋ชฉ์ ํ์ผ์ ๋ง๋ค ๋ CFLAGS์ ์ต์ ๋ค์ด ๋ค์ด๊ฐ์ง์ง ์์ c++ -c -o Contact.o Contact.cpp c++ -c -o PhoneBook.o PhoneBook.cpp c++ -Wall -Wextra -Werror -std=c++98 main.o Contact.o PhoneBook.o -o phonebook
- Makefile์ OBJS์์
ex00 ํ๊ฐํ์ ํญ๋ชฉ์ string/toupper ๋ฅผ ์ฌ์ฉํ๋ผ๋๋ง์ด ์์โฆ ์๋ ์ด๋ด๊ฑฐ๋ฉด subject์ ์ฐ๋ผ๊ตฌ์ฐ์ฐโฆ! ํ์ง๋ง ์ ๋ฐํ ๋ํ์ค๋ก ํต๊ณผ!
ex01
PhoneBook ๋ง๋ค๊ธฐ~~
- add, search, exit ๊ธฐ๋ฅ
- add : ์ contact ์ ์ฅ, ํ์ค์ ํ ํ๋์ฉ ์ ๋ ฅ๋ฐ๊ธฐ, empty field๊ฐ ์์ด์ ์๋จ
- search
- 4๊ฐ์ ์ด(index, firstname, lastname, nickname)๋ก ์ถ๋ ฅ
- ๊ฐ ์ด์ ์นธ์ 10์นธ, โ|โ๋ก ๋๋๊ณ ์ค๋ฅธ์ชฝ ์ ๋ ฌ
- prompt๋ index๋ฅผ ๋ค์ ๋ฌผ์ด๋ณด๊ณ ํด๋น contact๋ฅผ ํ ํ๋์ ํ ์ค์ฉ ์ถ๋ ฅํด์ค. index๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๊ด๋ จ ํ๋์ ์ ์ํ์์ค.
- exit : ํ๋ก๊ทธ๋จ ์ข ๋ฃ. contact๋ ์์ ์ฌ๋ผ์ง โฆ~
- ๋ค๋ฅธ input์ ๋ชจ๋ ๋ฌด์
std::cin
vsstd::cin.getline()
vsstd::getline()
std::cin
,std::cin.getline()
cin
์ ์ฌ๋ฌ ์๋ฃํ ๋ฐ๊ธฐ ๊ฐ๋ฅ,cin.getline
์ ๋ฌธ์์ด๋ง ๋ฐ๊ณ ์ข ๊ฒฐ ๋ฌธ์๋ฅผ โ\0โ๋ก ๋ฐ๊ฟcin
์ ๊ณต๋ฐฑ์ด ๋ค์ด์ค๋ฉด ์ ๋ ฅ์ด ๋๋ ์ค ์์ง๋งcin.getline
์ ๊ณต๋ฐฑ๋ ๋ฌธ์๋ก์ ๋ฐ์๋ค์cin.getline(๋ณ์์ ์ฃผ์, ์ต๋์ ๋ ฅ๊ฐ๋ฅ ๋ฌธ์์, ์ข ๊ฒฐ๋ฌธ์)
์ธ์๋ก ๋ค์ด๊ฐ๋ ์ธ๊ฐ์ง๋ฅผ ์ง์ ํด ์ค ์ ์์, ์ข ๊ฒฐ๋ฌธ์ ์๋ต์ ๋ํดํธ์ธ ์ํฐ๋ก ๊ฐ์ฃผ
std::getline()
๋std::cin.getline()
- ๊ธฐ๋ณธ ํํ getline(cin, str);
- cin.getline()์ istream์ ๋ฉค๋ฒํจ์, std::getline()์ ์ผ๋ฐํจ์
- cin.getline()์ ์ ๋ ฅ๊ฐ์ char* ํ์ ์ ์ฅ, getline()์ string์ ์ ์ฅ
- PhoneBook์์๋ string์ ์ฌ์ฉํ๋ฏ๋ก std::getline() ์ฌ์ฉ
//std::cin.getline() istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim ); //std::getline() (1) istream& getline (istream& is, string& str, char delim); istream& getline (istream&& is, string& str, char delim); (2) istream& getline (istream& is, string& str); istream& getline (istream&& is, string& str);
- iomanip
std::setw(x)
: x ๋งํผ ํ๋์ ๋๋น๋ฅผ ์ค์ . phonebook์ ์ด์นธ!std::setfill(c)
: ๋น ๊ณต๊ฐ์ c๋ก ์ฑ์์ค setfill์ ํ๋ฒ ์ค์ ์ ๊ณ์ ์ ์ฉ. ์ค์ ํ ์๋๋๋ก ๋๋ ค์ฃผ์ด์ผํจstd::left
std::right
: ์ผ์ชฝ์ ๋ ฌ, ์ค๋ฅธ์ชฝ ์ ๋ ฌ ๊ฐ๋ฅ
- ์ ์ถ๋ ฅ ํํ ์กฐ์๊ฐ๋ฅ !
cin.ignore()
istream& ignore (streamsize n = 1, int delim = EOF); //delim์ ๋ฌธ์๋ฅผ ๋ง๋ ๋๊น์ง ๋ฒํผ๋ฅผ ์ง์ด๋ค. ์ต๋ ์ง์ธ์ ์๋ ํฌ๊ธฐ๋ n๋งํผ์ std::cin.ignore(); // ๋ฌธ์ ํ๊ฐ ์ง์ (n์ 1, delim์ EOF๋ก ๋ํดํธ ์ง์ ๋์ด์์ std::cin.ignore(10); //๋ฌธ์ 10๊ฐ ์ง์ (delim์ EOF๋ก ๋ํดํธ๊ฐ ๋์ด์์) std::cin.ignore(10, '\n'); //'\n'๋ฅผ ๋ง๋ ๋๊น์ง ๋ฒํผ๋น์, ์ต๋๋ก ์ง์ธ ์ ์๋ ์๋ 10๊ฐ std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //'\n'์ ๋ง๋ ๋๊น์ง ๋ฒํผ๋ฅผ ๋น์, ์ฒซ๋ฒ์งธ์ธ์๋ ์คํธ๋ฆผ์ฌ์ด์ฆ ์ต๋๊ฐ์ ์๋ฏธ
- ์ ๋ ฅ ๋ฒํผ๋ฅผ ๋น์ธ ๋ ์ฌ์ฉํ๋ค. getline์ ๊ฒฝ์ฐ โ\nโ์ ์ ๋ ฅ๋ฒํผ๋ก ๊ฐ์ ธ์ ์ฒ๋ฆฌํ์ง๋ง cin์ ๊ฒฝ์ฐ โ\nโ์ ์ฒ๋ฆฌํ์ง ์๊ณ ์ ๋ ฅ๋ฒํผ์ ๋จ๊ฒจ๋๊ธฐ ๋๋ฌธ์ ๋ฒํผ๋ฅผ ๋น์์ค์ผ ํ๋ ์ํฉ์ด ์๊ธด๋ค.