C++์์๋ ํํ ์คํธ๋ฆผ์ ์ถ๋ฐ์ง์ ๋ชฉ์ ์ง๋ก ์ฝ์, ํ์ผ, ์คํธ๋ง์ ์ฌ์ฉํฉ๋๋ค.
โป ํ์ผ ๋์ ๋ํ๋ด๋ EOF(end of file)์ ์ ๋์ค์ ๋ฆฌ๋ ์ค์์๋ Ctrl+D๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ฐ์์๋ Ctrl+Z๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1. ์ถ๋ ฅ ์คํธ๋ฆผ์์ ์ ๊ณตํ๋ ๋ฉ์๋
๋ํ์ ์ธ cout์ ๋นผ๊ณ ์ ๋ฆฌํ์ต๋๋ค.
cin | ์ ๋ ฅ ์คํธ๋ฆผ. '์ ๋ ฅ ์ฝ์'์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค. |
cout | ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ์ถ๋ ฅ ์คํธ๋ฆผ. ๋ฐ์ดํฐ๋ฅผ '์ถ๋ ฅ ์ฝ์'์ ์ด๋ค. |
cerr | ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ถ๋ ฅ ์คํธ๋ฆผ. ๋ฐ์ดํธ๋ฅผ '์๋ฌ ์ฝ์'์ ์จ๋ค. |
clog | ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ cerr |
โป ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ฐจ์ด์ ์ฅ์ ์?
๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ ์คํธ๋ฆผ์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ์ ์ ์ฅํ๋ค๊ฐ ๋ธ๋ก ๋จ์๋ก ๋ชฉ์ ์ง๋ก ๋ณด๋ด๊ณ , ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค์๋ง์ ๋ชฉ์ ์ง๋ก ๋ณด๋ด๋๋ฐ, ๋ฒํผ๋ง(buffering)ํ๋ ์ด์ ๋ ํ์ผ๊ณผ ๊ฐ์ ๋์์ ์ ์ถ๋ ฅ์ ์ํํ ๋๋ ๋ธ๋ก ๋จ์๋ก ๋ฌถ์ด์ ๋ณด๋ด๋ ๊ฒ์ด ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
write | ์ถ๋ ฅ ๋์์ ๊ฐ์ถ ๊ฐ์ฒด๋ ๋ณ์๊ฐ ์๋ ๋ฌธ์ ๋ฐฐ์ด ํ๋ ์ธ์๋ก ๋ฐ๋๋ค. |
put | ์ถ๋ ฅ ๋์์ ๊ฐ์ถ ๊ฐ์ฒด๋ ๋ณ์๊ฐ ์๋ ๋ฌธ์ ํ๋๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค. |
flush | ์คํธ๋ฆผ์ ๋ฒํผ๋ฅผ ๋ช ์์ ์ผ๋ก ๋น์ด๋ค. |
good | ์คํธ๋ฆผ์ ์ ์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ํ์ธ์ง ํ์ธํ๋ค. ์ฌ์ฉํ ์ ์๋ ์ํ์ผ ๋ ์์ธ์ ์๋ ค์ฃผ์ง ์๋๋ค. |
fail | ์ต๊ทผ ์ํํ ์ฐ์ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ ์ ์๋ค. โป cout.fail() == !cout |
clear | ์คํธ๋ฆผ ์๋ฌ ์ํ๋ฅผ ์ด๊ธฐํ ํ๋ค. |
bad | ์ฌ์ฉํ ์ ์๋ ์ํ์ผ๋ ์์ธ์ ์๋ ค์ฃผ๋ ํจ์์ด๋ค. |
2. ์ ๋ ฅ ์คํธ๋ฆผ ๋ฉ์๋
์ ๋ ฅ ์คํธ๋ฆผ์ ์ด์ฉํ๋ฉด ์ผ๋ฐ ๋ฐ์ดํฐ ๋ฟ ๋ง ์๋๋ผ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ ์ฝ๊ฒ ์ฝ์ ์ ์์ต๋๋ค.
<< | >> ์ฐ์ฐ์์ ๊ธฐ๋ณธ ์ค์ ์ ๋ฐ๋ฅด๋ฉด ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฅ๋ ๊ฐ์ ํ ํฐ ๋จ์๋ก ๋๋๋๋ค. ๋ฐ๋ผ์ ๊ณต๋ฐฑ์ ๋ด์ ์ ์๋ค. |
get | ์ ๋ ฅ๊ฐ์ ๊ณต๋ฐฑ์ ๋ด์ ์ ์์ต๋๋ค. ์คํธ๋ฆผ์ ๋์ ๋๋ฌํ ๋๊น์ง ์ด๋ฆ์ ๊ณ์ ์ฝ๋๋ค. |
unget | ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ ๋ ฅ ์์ค ๋ฐฉ๋์ผ๋ก ๋ณด๋ผ ์ ์๋ค. ๊ทธ๋์ ์ด์ ์ ์ฝ์ ๋ฌธ์๋ฅผ ์คํธ๋ฆผ์ผ๋ก ๋๋๋ฆฐ๋ค. |
putback | unget๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ ฅ ์คํธ๋ฆผ์ ํ ๋ฌธ์๋งํผ ๋๋๋ฆฐ๋ค. |
peek | get์ ํธ์ถํ ๋ ๋ฆฌํด๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ค๋ค. |
getline | ๋ฏธ๋ฆฌ ์ค์ ํ ๋ฒํผ๊ฐ ๊ฐ๋ ์ฑ์์ง ๋ ๊น์ง ๋ฌธ์ ํ ์ค์ ์ฝ๋๋ค. ์ด ๋ ๋ฌธ์ ํ ์ค์ ๋์ ๋ํ๋ด๋ \0(EOF end-of-line)๋ฌธ์๋ ๋ฒํผ์ ํฌ๊ธฐ์ ํฌํจ๋๋ค. |
3. ์ ์ถ๋ ฅ ๋งค๋ํฐ๋ ์ดํฐ
C++์ ์คํธ๋ฆผ์ ๋จ์ํ ๋ฐ์ดํฐ๋ง ์ ๋ฌํ๋๋ฐ ๊ทธ์น์ง ์๊ณ , ๋งค๋ํฐ๋ ์ดํฐmamipulator(์กฐ์ข ์)๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ์คํธ๋ฆผ์ ๋์์ ๋ณ๊ฒฝํ ์ ์๋ค. ์ด๋ ์คํธ๋ฆผ์ ๋์์ ๋ณ๊ฒฝํ๋ ์์ ๋ง ํ ์๋ ์๊ณ , ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด์ ๋์๋ ๋ณ๊ฒฝํ ์ ์๋ค.
boolalpha, noboolalpha | (boolalpha)์คํธ๋ฆผ bool ๊ฐ์ true๋ false๋ก ์ถ๋ ฅํ๊ฑฐ๋, (noboolalpha)1์ด๋ 0์ผ๋ก ์ถ๋ ฅํ๋๋ก ์ค์ ํ๋ค. |
hex, oct, dec | 16์ง์(hexadecimal), 8์ง์(octal), 10์ง์(decimal)๋ก ์ถ๋ ฅํ๋ค. |
skipws, noskipws | ์ ๋ ฅํ ํ์ผ์ ์ด๊ณ ์์ ์ง์ ๋ถํฐ ์ฝ๋๋ค. |
ws | ์คํธ๋ฆผ์ ํ์ฌ ์์น๋ถํฐ ์ฐ๋ฌ์ ๋์จ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ๊ฑด๋๋ด๋ค. |
get_money | ์คํธ๋ฆผ์์ ํํ ๊ธ์ก์ ์ผ์ ํ ํ์์ ๋ง๊ฒ ํํํ ๋ ์ฌ์ฉํ๋ ๋งค๋ํฐ๋ ์ดํฐ๋ก ์ธ์๋ฅผ ๋ฐ๋๋ค. |
get_time | ์คํธ๋ฆผ์์ ์๊ฐ์ ์ผ์ ํ ํ์์ ๋ง๊ฒ ํํํ ๋ ์ฌ์ฉํ๋ ๋งค๋ํฐ๋ ์ดํฐ๋ก์ ์ธ์๋ฅผ ๋ฐ๋๋ค. |
quoted | ์ง์ ํ ์คํธ๋ง์ ์ธ์ฉ๋ถํธ๋ก ๊ฐ์ธ๊ณ , ์คํธ๋ง ์์ ์๋ ์ธ์ฉ ๋ถํธ๋ฅผ ์ด์ค์ผ์ดํ ๋ฌธ์๋ก ๋ณํํ๋ค. ์ด ๋งค๋ํฐ๋ ์ดํฐ๋ ์ธ์๋ฅผ ๋ฐ๋๋ค. |
setprecision | ๋ถ์๊ฐ์ ํํํ ๋ ์ ์ฉํ ์์์ ์๋ฆฟ์๋ฅผ ์ง์ ํ๋ค. ์๋ฆฟ์๋ฅผ ํํํ๋ ์ธ์๋ฅผ ๋ฐ๋๋ค. |
setw | ์ซ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ํ๋์ ๋๋น๋ฅผ ์ง์ ํ๋ค. |
setfill | ์ง์ ๋ ๋๋น๋ณด๋ค ์ซ์๊ฐ ์์ ๋ ๋น ๊ณต๊ฐ์ ์ฑ์ธ ๋ฌธ์๋ฅผ ์ง์ ํ๋ค. |
showpoint, noshowpoint | ์์์ ์๋์ ์๊ฐ ์๋ ๋ถ๋์์์ ์๋ฅผ ์คํธ๋ฆผ์ ํํํ ๋ ์์์ ์ ํ์ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค. |
4. ํ์ผ ์คํธ๋ฆผ
ํ์ผ์ ์คํธ๋ฆผ ๊ฐ๋ ๊ณผ ์ ํํ ์ผ์นํ๋ค. ํ์ผ์ ์ฝ๊ณ ์ธ ๋ ํญ์ ํ์ฌ ์์น๋ฅผ ์ถ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. C++ํ์ผ ์ถ๋ ฅ๊ณผ ์ ๋ ฅ์ ์ํด ofstream, ifstreamํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. ๋ ๋ค <fstream>ํค๋ ํ์ผ์ ์ ์๋ผ ์๋ค.
ios_base::app | ํ์ผ์ ์ด๊ณ , ์ฐ๊ธฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ ์ ํ์ผ ๋์ผ๋ก ๊ฐ๋ค. |
ios_base::ate | ํ์ผ์ ์ด๊ณ , ์ฆ์ ํ์ผ ๋์ผ๋ก ๊ฐ๋ค. |
ios_base::binary | ์ ๋ ฅ ๋๋ ์ถ๋ ฅ์ ํ ์คํธ๊ฐ ์๋ ๋ฐ์ด๋๋ฆฌ ๋ชจ๋๋ก ์ฒ๋ฆฌํ๋ค. |
ios_base::in | ์ ๋ ฅํ ํ์ผ์ ์ด๊ณ ์์ ์ง์ ๋ถํฐ ์ฝ๋๋ค. |
ios_base::out | ์ถ๋ ฅํ ํ์ผ์ ์ด๊ณ ์์ ์ง์ ๋ถํฐ ์ด๋ค. ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ด๋ค. |
ios_base::trunc | ์ถ๋ ฅํ ํ์ผ์ ์ด๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ญ์ ํ๋ค. |
โป seek( ) tell( ) ๋ฉ์๋๋ก ๋๋ค ์ก์ธ์คํ๊ธฐ
์ ๋ ฅ๊ณผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ชจ๋ seek( )๊ณผ tell( ) ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ค.
seek | ์ ๋ ฅ ๋๋ ์ถ๋ ฅ ์คํธ๋ฆผ์์ ํ์ฌ ์์น๋ฅผ ์ํ๋ ์ง์ ์ผ๋ก ์ฎ๊ธด๋ค. | seekg |
seekp | ||
tell | ์คํธ๋ฆผ์ ํ์ฌ ์์น๋ฅผ ์์๋ผ ์ ์๋ค. ํ์ฌ ์์น๋ฅผ streamposํ์ ์ ๊ฐ์ผ๋ก ๋ฆฌํดํ๋ค. | tellg |
tellp |
- ์ฌ๊ธฐ์ g๋ 'get'์ p๋ 'put'์ ์๋ฏธํ๋ค. seekํ๋๋ก ํํํ์ง ์๊ณ ๊ตฌ๋ถํ ์ด์ ๋ ํ์ผ ์คํธ๋ฆผ์ฒ๋ผ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ชจ๋ ๊ฐ์ง ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ด ๋๋ ์ฝ๋ ์์น์ ์ฐ๋ ์์น๋ฅผ ๋ณ๋๋ก ๊ด๋ฆฌํด์ผ ํ๋ค. ์ด๋ฅผ ์๋ฐฉํฅ(bidirectional)I/O๋ผ๊ณ ๋ถ๋ฅธ๋ค. seekg์ seekp๋ ๊ฐ๊ฐ ๋๊ฐ์ง ๋ฒ๋ฒ์ด ์๋๋ฐ, ํ๋๋ ์ ๋ ์์น๋ฅผ ๋ํ๋ด๋ ์ธ์ ํ๋๋ง ๋ฐ์์ ๊ทธ ์์น๋ก ์ด๋ํ๋ค. ๋ค๋ฅธ ํ๋๋ ์คํ์ ๊ณผ ์์น์ ๋ํ ์ธ์๋ฅผ ๋ฐ์์ ์ง์ ํ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จ์ด์ง ๊ฑฐ๋ฆฌ(์คํ์ )๋ก ์ด๋ํ๋ค. ์ด๋ ์์น๋ std::streampos๋ก, ์คํ์ ์ std::streamoff๋ก ํํํ๋ค.
ios_base::beg | ์คํธ๋ฆผ์ ์์์ |
ios_base::end | ์คํธ๋ฆผ์ ๋์ |
ios_base::cur | ์คํธ๋ฆผ์ ํ์ฌ ์์น |
โป ํ ์คํธ ๋ชจ๋์ ๋ฐ์ด๋๋ฆฌ ๋ชจ๋?
๋ฐ์ด๋๋ฆฌ ๋ชจ๋๋ก ์ด๋ฉด ์ ํํ ๋ฐ์ดํธ ๋จ์๋ก ์ง์ ํ ๋งํผ๋ง ํ์ผ์ ์ด๋ค. ํ์ผ์ ์ฝ์ ๋๋ ํ์ผ์์ ์ฝ์ ๋ฐ์ดํธ ์๋ฅผ ๋ฆฌํดํ๋ค. ํ ์คํธ ๋ชจ๋๋ก ์ด๋ฉด ํ์ผ์์ \n์ด ๋์ฌ ๋๋ง๋ค ํ ์ค์ฉ ์ฝ๊ฑฐ๋ ์ด๋ค. (ํ์ผ์์ ์ค๋(EOL)์ ๋ํ๋ด๋ ๋ฌธ์๋ os๋ง๋ค ๋ค๋ฅด๋ค. ์๋์ฐ๋ \n์ด ์๋ \r\n์ผ๋ก ์ค๋์ ํํํ๋ค.)
5. ์คํธ๋ง ์คํธ๋ฆผ
string์ ์คํธ๋ฆผ ๊ฐ๋ ์ ์ถ๊ฐํ ๊ฒ์ผ๋ก ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์คํธ๋ฆผ ํํ๋ก ํํํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์คํธ๋ฆผ์ ๋ง๋ค์ ์๋ค. ์คํธ๋ง ์คํธ๋ฆผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ๊ทผํ(tokenizing)๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ํ ์คํธ ๊ตฌ๋ฌธ ๋ถ์(ํ์ฑparsing)์์ ์ ํ์ฉํด๋ ํธํ๋ค.
string์ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋๋ std::ostringstreamํด๋์ค๋ฅผ, ๋ฐ๋๋ก string์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ std::istringstreamํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค. ๋๋ค <sstream>ํค๋ ํ์ผ์ ์ ์๋ผ ์๋ค. ostringstream๊ณผ istringstream์ ๊ฐ๊ฐ ostream๊ณผ istream์ ์์ํ๋ฏ๋ก ๊ธฐ์กด ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ฒ๋ผ ๋ค๋ฃฐ ์ ์๋ค.
ํ์ค c++string๋ง ์ฌ์ฉํ์ง ์๊ณ ์คํธ๋ง ์คํธ๋ฆผ์ ํจ๊ป ํ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ์ง์ (ํ์ฌ ์์น)์ ์ ์ ์์ด์ ์ข๋ค.
์ถ์ฒ: ์ ๋ฌธ๊ฐ๋ฅผ ์ํ C++
'๐จ๐ปโ๐ป programming > โฝ c, c++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์ ๋ค๋ฆญ ์๊ณ ๋ฆฌ์ฆ ๋ชจ์ (0) | 2022.05.16 |
---|---|
[C++] std::string_view ํด๋์ค (0) | 2022.02.09 |
[C++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ํ๋กํ ํ์ & ํ๊ณ (0) | 2022.02.08 |
[C++] ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.03.14 |
(c++) ์กฐ๊ฑด ๋ณ์(Conditional Variable) (0) | 2021.03.13 |
์ ํ๋ ๊ฒ ๋ณด๋ค ๋ซ๊ฒ ์ง
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!