본문 바로가기

C

c++ 클래스, fstream(파일인풋), stringstream(스트링인풋)

코드 >>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
class Cat
{
public:
    Cat(std::string name, int age) : mName{ std::move(name) }, mAge{ age } {};
    void print(std::ostream & os)
    {
        os << mName << "," << mAge << "\n";
    }
private:
    std::string mName;
    int mAge;
};
int main()
{
    Cat kitty{ "kitty",3 };
    Cat nabi{ "nabi",2 };
    // test.txt에 출력 내용 저장
    // scope 안에 넣어 주어서 자동적으로 file close를 해야 한다.
    {
        std::ofstream ofs{ "test.txt" };
        if (!ofs)
        {
            std::cout << "cannot open the file!" << std::endl;
            return 0;
        }
        //kitty.print(std::cout);
        //nabi.print(std::cout);
        kitty.print(ofs);
        nabi.print(ofs);
    }
    Cat kitty2{ "meow"4 };
    Cat nabi2{ "nabi"4 };
    std::stringstream ss;
    kitty2.print(ss);
    nabi2.print(ss);
    std::cout << ss.str() << std::flush;
    return 0;
}