๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++

(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++/ ๊ฐœ์ • 4ํŒ) - I/O ์ž…์ถœ๋ ฅ ์™„์ „ ๋ถ„์„

DoctorSunAhna 2022. 1. 31. 01:13
728x90

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++

 

 

 

 

 

 

์ถœ์ฒ˜: ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++

 

728x90