ํ ์คํธ ํ์ผ์ ์ฐ๊ธฐ
ํ์ผ ์ถ๋ ฅ
- fstream ํค๋ ํ์ผ์ ํฌํจ์์ผ์ผ ํ๋ค.
- fstream ํค๋ ํ์ผ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ ofstream ํด๋์ค๋ฅผ ์ ์ํ๋ค.
- ํ๋ ์ด์์ ofstream ๋ณ์ ๋๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ ํ์๊ฐ ์๋ค.
- ์ผ๋ฐ์ ์ธ ์ด๋ฆ ์ง๊ธฐ ๊ด๋ก๋ฅผ ์ค์ํ๋ ํ, ์ฌ์ฉ์๋ ์ํ๋ ์ด๋ฆ์ ์ง์ ๊ฐ๋ฅ
- std ์ด๋ฆ ๊ณต๊ฐ์ ์ง์ ํด์ผ ํจ, ์๋ฅผ ๋ค๋ฉด, ofstream๊ณผ ๊ฐ์ ์์๋ค์ ๋ํด using ์ง์์ ๋๋ std:: ์ ๋์ฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ํน์ ofstream ๊ฐ์ฒด์ ํน์ ํ์ผ์ ์ฐ๊ฒฐ์ํฌ ํ์๊ฐ ์๋ค. ๊ทธ๋ ๊ฒ ํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์, open() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ.
- ํ์ผ์ ๋ค๋ฃจ๋ ์์ ์ด ๋๋๋ฉด, close() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ํ์ผ์ ๋ซ์์ผ ํ๋ค.
- ofstream ๊ฐ์ฒด๋ฅผ <<์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ ์ถ๋ ฅ ๊ฐ๋ฅ
iostream ํค๋ ํ์ผ์ด cout์ด๋ผ๋ ๋ฏธ๋ฆฌ ์ ์๋ ostream ๊ฐ์ฒด๋ฅผ ์ ๊ณตํ ์ง๋ผ๋, ์ฌ์ฉ์ ์์ ์ ofstream ๊ฐ์ฒด๋ฅผ ์ ์ธํ๊ณ , ์ ๋นํ ์ด๋ฆ์ ๋ถ์ฌํ๊ณ , ํ์ผ๊ณผ ์ฐ๊ฒฐ์์ผ์ผ ํจ.
ofstream ๊ฐ์ฒด ์ ์ธ ๋ฐฉ๋ฒ
ofstream outFile; //outFile์ ofstream ๊ฐ์ฒด
ofstream fout; //fout์ ofstream ๊ฐ์ฒด
๊ฐ์ฒด๋ฅผ ํน์ ํ์ผ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ
outFile.open("fish.txt");
char filename[50];
cin>>filename;
fout.open(filename);
open() ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์๋ก c์คํ์ผ ๋ฌธ์์ด์ ์๊ตฌํจ.
๋ฆฌํฐ๋ด ๋ฌธ์์ด์ด๋ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ ๊ฐ๋ฅ
double wt = 125.8;
outFile<<wt; //fist.txt ์ ํ๋์ ์๋ฅผ ์
char line[81]="objects are ... ";
ํ์ผ ์ถ๋ ฅ์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ์ ์ฐจ
- fstream ํค๋ ํ์ผ ํฌํจ
- ofstream ๊ฐ์ฒด ์์ฑ
- ofstream ๊ฐ์ฒด๋ฅผ ํ์ผ์ ์ฐ๊ฒฐ
- ofstream ๊ฐ์ฒด๋ฅผ cout๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ
ํ๋ก๊ทธ๋จ์ด ofstream ๊ฐ์ฒด๋ฅผ ์ ์ธํ ํ, open() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ๊ฐ์ฒด๋ฅผ ํน์ ํ์ผ์ ์ฐ๊ฒฐํ ์ ์๋ค.
ofstream outFile;
outFile.open("carinfo.txt");
outFile.close();
ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์ณค์ ๋, ํ๋ก๊ทธ๋จ์ ๊ทธ ์ฐ๊ฒฐ์ ๋ซ์์ผ ํ๋ค.
outFile์ด ํน์ ํ์ผ๊ณผ ์ด๋ฏธ ์ฐ๊ฒฐ๋์์ผ๋ฏ๋ก close() ๋ฉ์๋๋ ํ์ผ ์ด๋ฆ์ ์๊ตฌํ์ง ์์, ํ๋ก๊ทธ๋จ์ด ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค๋ฉด ํ์ผ์ด ์๋์ผ๋ก ๋ซํ๋ค.
outFile์ cout์ด ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฉ์๋๋ค ์ฌ์ฉ ๊ฐ๋ฅ
<<์ฐ์ฐ์๋ฟ ์๋๋ผ, setf()์ precision()๊ณผ ๊ฐ์ ๋ค์ํ ํฌ๋งทํ ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ. ๋ฉ์๋๋ค์ ํธ์ถํ ๊ฐ์ฒด์๋ง ์ํฅ์ ๋ฏธ์นจ
cout.precision(2); //๋์คํ๋ ์ด์ ์ ๋ฐ๋ 2 ์ฌ์ฉ
outFile.precision(4); //ํ์ผ ์ถ๋ ฅ์ ์ ๋ฐ๋ 4 ์ฌ์ฉ
outFile.open("carinfo.txt");
carinfo.txt ํ์ผ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ ์๋ ์กด์ฌํ์ง ์์
open() ๋ฉ์๋๋ ๊ทธ ์ด๋ฆ์ผ๋ก ์ ํ์ผ์ ์์ฑํจ.
carinfo.txt ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ ๊ฒฝ์ฐ, open()์ ๊ทธ ํ์ผ์ ๋จผ์ ์๋ฅธ ํ ์๋ก์ด ์ถ๋ ฅ์ผ๋ก ๋ด์ฉ์ ๋์ฒดํ๋ค.
ํ ์คํธ ํ์ผ ์ฝ๊ธฐ
- iostream ํค๋ ํ์ผ์ ํฌํจ์์ผ์ผ ํ๋ค.
- iostream ํค๋ ํ์ผ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ istream ํด๋์ค๋ฅผ ์ ์ํ๋ค.
- iostream ํค๋ ํ์ผ์ cin์ด๋ผ๋ istream ๋ณ์ ๋๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ๋ค.
- std ์ด๋ฆ ๊ณต๊ฐ์ ์ง์ ํด์ผ ํ๋ค. ์๋ฅผ ๋ค๋ฉด, cin๊ณผ ๊ฐ์ ์์๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด using ์ง์์ ๋๋ std:: ์ ๋์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- cin์ >> ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ์ฌ, ๊ฐ๋ณ์ ์ธ ๋ฌธ์๋ค์ ์ฝ์ ์ ์๋ค.
- cin์ get() ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ, ํ ๋ฒ์ ํ ํ์ ๋ฌธ์๋ค์ ์ฝ์ ์ ์๋ค.
- cin์ eof()์ fail()๊ณผ ๊ฐ์ ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ, ์ ๋ ฅ ์๋๊ฐ ์ฑ๊ณตํ๋์ง ๊ฐ์ ๊ฐ๋ฅ
- cin ๊ฐ์ฒด ์์ฒด๊ฐ ๊ฒ์ฌ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋์์ ๋, ๋ง์ง๋ง ์ฝ๊ธฐ ์๋๊ฐ bool ๊ฐ true๋ก ๋ณํ๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ก ๋ณํ๋๋ค.
ํ์ผ ์ ๋ ฅ
- fstream ํค๋ ํ์ผ์ ํฌํจ์์ผ์ผ ํ๋ค.
- fstream ํค๋ ํ์ผ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ ifstream ํด๋์ค๋ฅผ ์ ์ํ๋ค.
- ํ๋ ์ด์์ ifstream ๋ณ์ ๋๋ ๊ฐ์ฒด๋ฅผ ์ ์ธํ ํ์๊ฐ ์๋ค. ์ผ๋ฐ์ ์ธ ์ด๋ฆ ์ง๊ธฐ ๊ด๋ก๋ฅผ ์ค์ํ๋ ํ, ์ฌ์ฉ์๊ฐ ์ํ๋ ์ด๋ฆ์ ์ง์ ํ ์ ์๋ค.
- std ์ด๋ฆ ๊ณต๊ฐ์ ์ง์ ํด์ผ ํ๋ค. ์๋ฅผ ๋ค๋ฉด, ifstream๊ณผ ๊ฐ์ ์์๋ค์ ์ฌ์ฉํ๊ธฐ ์ํด using ์ง์์ ๋๋ std:: ์ ๋์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
- ํน์ ifstream ๊ฐ์ฒด์ ํน์ ํ์ผ์ ์ฐ๊ฒฐ์ํฌ ํ์๊ฐ ์๋ค. ๊ทธ๋ ๊ฒ ํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์, open() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
- ํ์ผ์ ๋ค๋ฃจ๋ ์์ ์ด ๋๋๋ฉด, close() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ํ์ผ์ ๋ซ์์ผ ํ๋ค.
- ifstream ๊ฐ์ฒด๋ฅผ >> ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
- ifstream ๊ฐ์ฒด๋ฅผ get() ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ, ๊ฐ๋ณ์ ์ธ ๋ฌธ์๋ค์ ์ฝ์ ์ ์๋ค. ifstream ๊ฐ์ฒด๋ฅผ getline() ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ, ํ ๋ฒ์ ํ ํ์ ๋ฌธ์๋ค์ ์ฝ์ ์ ์๋ค.
- ifstream ๊ฐ์ฒด๋ฅผ eof()์ fail()๊ณผ ๊ฐ์ ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ, ์ ๋ ฅ ์๋๊ฐ ์ฑ๊ณตํ๋์ง ๊ฐ์ํ ์ ์๋ค.
- ifstream๊ฐ์ฒด ์์ฒด๊ฐ ๊ฒ์ฌ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋์์ ๋, ๋ง์ง๋ง ์ฝ๊ธฐ ์๋๊ฐ ์ฑ๊ณต์ด๋ฉด bool๊ฐ true๋ก ๋ณํ๋๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ก ๋ณํ๋๋ค.
์ฌ์ฉ์ ์์ ์ ifstream ๊ฐ์ฒด ์ ์ธ ๋ฐฉ๋ฒ
ifstream inFile; //inFile์ ifstream ๊ฐ์ฒด
ifstream fin; //fin์ ifstream ๊ฐ์ฒด
๊ฐ์ฒด๋ฅผ ํน์ ํ์ผ์ ์ฐ๊ฒฐํ๋ ๋ฒ
inFile.open("bowling.txt"); //bowling.txt ํ์ผ์ ์ฝ๋๋ฐ inFile ์ฌ์ฉ
char filename[50];
cin>>filename; //์ฌ์ฉ์๊ฐ ์ด๋ฆ ์ง์
fin.open(filename); //์ง์ ๋ ํ์ผ์ ์ฝ๋๋ฐ fin ์ฌ์ฉ
open() ๋ฉ์๋๋ ๋งค๊ฐ๋ณ์๋ก c์คํ์ผ ๋ฌธ์์ด์ ์๊ตฌํจ
๋ฆฌํฐ๋ด ๋ฌธ์์ด์ด๋ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ฌธ์์ด์ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉ ๊ฐ๋ฅ
double wt;
inFile>>wt; //bowling.txt ์์ ํ๋์ ์๋ฅผ ์ฝ์
char line[81];
fin.getline(line,81); //ํ ํ์ ํ ์คํธ ์ฝ์
ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์ด๋ ธ๋์ง ํ์ธํ๋ ์ข์ ๋ฐฉ๋ฒ : is_open() ๋ฉ์๋ ์ฌ์ฉ
inFile.open("bowling.txt");
if(!inFile.is_open())
exit(EXIT_FAILURE);
ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ๊ฒ์ฌํ ๋ช ๊ฐ์ง
- ํ๋ก๊ทธ๋จ์ EOF๋ฅผ ์ง๋์ณ์ ๋ ์ฝ์ผ๋ ค๊ณ ์๋ํ๋ฉด ์ ๋๋ค.
- ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐํ ๋ถ์ผ์น๋ฅผ ๋ง๋ ์ ์๋ค.
- ์ ํ ๋ป๋ฐ์ ๊ฒ์ด ๋ฐ์.
ํด๊ฒฐ ๋ฐฉ๋ฒ
while(inFile.good())
{
...
}
if(inFile.eof())
cout<<"ํ์ผ ๋ ๋๋ฌ\n";
else if(inFile.fail())
cout<<"๋ฐ์ดํฐํ ๋ถ์ผ์น\n";
else
cout<<"์์์์";