์ง๋ ์๊ฐ์ fstream ํ์ผ์๋ ์ธ๊ฐ์ ํด๋์ค๊ฐ ์๋ค๊ณ ํ์ฃ . ifstream, ofstream, fstream ํด๋์ค๊ฐ ์์ต๋๋ค. ์ง๋์๊ฐ์ ํ์ผ ์ ์ถ๋ ฅ์ผ๋ก ifstream(ํ์ผ์ฝ๊ธฐ), ofstream(ํ์ผ์ฐ๊ธฐ)๋ก ์ฐ์ตํ๋๋ฐ ๋ง์ง๋ง ๊ธ๋์ fstream ํด๋์ค ํ๋๋ก ์ ์ถ๋ ฅ์ ํ ์ ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ง๋์๊ฐ์ ๋นผ๋จน์ด์ ์ค๋ ์ฃผ์ ๋ก ๊ฒฐ์ ํ๋ค์. ๊ทธ๋ฅ ํ๋ฉด ์ฌ๋ฏธ ์์ผ๋ csv ํ์ผ์ ์ฝ์ด์์ ์ถ๋ ฅํ๋ ์ค์ต์ ํด๋ณด๋ ์๊ฐ์ ๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
class fstream : public fstreambase, public iostream {
}
์ ํด๋์ค ๋ด๋ถ ํจ์๋ค์ ifstream๊ณผ ofstream์์ ์ฐ๋ ๋ฐฉ์๊ณผ ํฌ๊ฒ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
fstream fs;
fs.open("ํ์ผ๋ช
", ios::in or ios::out);
fs.close();
์ ์ฝ๋ฉ์์ ํ์ผ๋ช ์ ์ง์ ํด์ฃผ๊ณ in์ ํด๋น ์์น์ ํ์ผ์ด ์ฝ๊ฒ ๋ค๋ ์๋ฏธ์ด๊ณ , out์ ํด๋น ์์น์ ํ์ผ์ ์ฐ๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค. ๋์ค ํ๋ ๋ชจ๋๋ฅผ ์ง์ ํด์ฃผ๋ฉด ํ์ผ์ ์ฝ์์ง ์ธ์ง๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ๋๋จธ์ง ์ฌ์ฉ๋ฒ์ ๊ฐ์ต๋๋ค.
[test.csv ํ์ผ]
์์ ํ์ผ๋ก ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ ์ ์ฅ์ csv ํ์ผ์ ๋ง๋๋๋ฐ ๊ตฌ๋ถ์๋ ์ฝค๋ง(,)๋ก ํด์ ๋ฐ์ดํฐ ํ์ผ์ ๋ง๋ญ๋๋ค.
์ด ํ์ผ์ ์ฝ๊ธฐ ์ํด์
fstream fs;
fs.open("test.csv",ios::in);
fs๋ก ์ฝ๊ธฐ๋ชจ๋๋ก ์ฝ์ด ์ค๋ฉด ๋๋ฉ๋๋ค.
์ฝ์ ๋ ์ง๋์๊ฐ์ ์ด getline()ํจ์๋ฅผ ์ด์ฉํฉ๋๋ค.
getline(ํ์ผ๊ฐ์ฒด,์ ์ฅ๋ณ์,๊ตฌ๋ถ์);
getline(fs,str_buf,',');
fs ํ์ผ๊ฐ์ฒด์์ ์ฝ์ด์ค๋ ์ฝค๋ง(,) ๊ตฌ๋ถ์๋ก ํด์ ์ฝ์ด์ค๊ฒ ๋ฉ๋๋ค. ์ค์ง์ ์ผ๋ก str_buf ๋ณ์์๋ ์ฝค๋ง์ด์ ๊น์ง์ ๋ฌธ์์ด๊ฐ์ ์ฝ์ด์ค๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ์ฝค๋ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํด์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ ํ ๊น์.
[์ ์ฒด์์ค]
#include
#include
#include
using namespace std;
int main(int argc, char** argv) {
string str_buf;
fstream fs;
fs.open("test.csv",ios::in);
while(!fs.eof()){
getline(fs,str_buf,',');
cout<<str_buf<<endl;
}
fs.close();
return 0;
}
[๊ฒฐ๊ณผ]
์ฝค๋ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ฐ์ฉ ์ฝ์ด์ค๊ฒ ๋ฉ๋๋ค. ์ด ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌ ํ ์ง๋ ์ฌ๋ฌ๋ถ์ ๋ชซ์ผ๋ก ๋จ๊ฒจ ๋๊ฒ ์ต๋๋ค.
์ค๋์ ์ง๋ ์๊ฐ์ ๋นผ๋จน์ fstream ํด๋์ค ํ๋๋ก ํ์ผ ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ณด์์ต๋๋ค. ์ ์ค์ต์์๋ ์ฝ์ด์ค๋ ์ค์ต๋ง ํ์ง๋ง ios::out ๋ชจ๋๋ก ๋ฐ๊พธ๊ณ ํ์ผ๊ฐ์ฒด์ "fs<<์ถ๋ ฅ๋ฐ์ดํฐ"๋ก ํํํ์ฌ ์ถ๋ ฅ ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด๊ฑด ์ฌ๋ฌ๋ถ๋ค์ด ์ ์ฝ๊ธฐ ์ฝ๋ฉ์ ์์ ํ์ฌ ์ฐ๊ธฐ ์ฝ๋ฉ์ผ๋ก ๋ฐ๊พธ๋ ์ค์ต์ ์ง์ ํด๋ณด์ธ์.