#include <fstream>
#include <string>
#include <cassert>

int main() {
    {
        // откроем файл на запись
        std::ofstream out("file.txt");
        int n = 10;
        std::string s = "hello world";
        out << n << "\n";
        out << s << "\n";
        // так как мы достигли }, то out уничтожится и файл автоматически закроется
        // это правило касается абсолютно любой }
    }
    {
        // откроем тот же файл на чтение
        std::ifstream in("file.txt");
        int n;
        std::string s1, s2;
        in >> n;
        // чтение идет до первого пробельного символа
        // поэтому "hello world" нужно считывать в два подхода
        in >> s1 >> s2;
        // проверим, что считали ровно то, что ожидали
        // assert уронит программу, если условие нарушится
        assert(n == 10);
        assert(s1 == "hello");
        assert(s2 == "world");
    }
    return 0;
}
