Я предполагаю, что вы привыкли к чему-то вроде Java или C #, где возможны такие вещи:
BufferedReader br = new BufferedReader(new FileReader(FILENAME));
Или даже Python:
lines = open("filename").readlines();
Трюк здесьв том, что с правильными «фабричными функциями» вы могли бы делать это и в C ++, но это не то, как этот конкретный класс сделанДругие примеры, приведенные выше, с одним из них:
std::ofstream outfile{"foo"};
auto outfile = std::ofstream("foo");
- это «нормальный» способ сделать это в C ++.Часть вашего отсоединения заключается в том, что метод open()
возвращает void: std :: basic_ofstream :: open () doc .Поэтому, когда у вас есть этот код:
std::ofstream outfile.open("foo");
Он не компилируется, потому что open()
является функцией-членом (не статичной) И возвращает void
, а не std::ofstream
, что вы и объявилиДелаем.
Надеюсь, это прояснит для вас.