Каква е разликата между:
fstream texfile;
textfile.open("Test.txt");
и
ofstream textfile;
textfile.open("Test.txt");
Функциите им еднакви ли са?
Каква е разликата между:
fstream texfile;
textfile.open("Test.txt");
и
ofstream textfile;
textfile.open("Test.txt");
Функциите им еднакви ли са?
ofstream
има само методи за извеждане, така че например, ако опитате textfile >> whatever
, той няма да се компилира. fstream
може да се използва за вход и изход, въпреки че какво ще работи зависи от флаговете, които предавате на конструктора / open
.
std::string s;
std::ofstream ostream("file");
std::fstream stream("file", stream.out);
ostream >> s; // compiler error
stream >> s; // no compiler error, but operation will fail.
Коментарите имат още няколко страхотни точки.
ofstream::open
по подразбиране е отворен режим ios_base::out
, а fstream::open
по подразбиране е ios_base::in | ios_base::out
- person M.M; 24.04.2014
std::fstream
, опитът за отваряне на файла ще се провали, ако файлът не съществува. Това е в контраст с std::ofstream
, който създава файл, ако такъв не може да бъде намерен. Човек би трябвало да добави флага std::ios_base::trunc
към маската, когато извиква конструктора или open()
на std::fstream
.
- person 0x499602D2; 24.04.2014
Разгледайте техните страници на cplusplus.com тук и тук.
ofstream
наследява от ostream
. fstream
наследява от iostream
, което наследява както от istream
, така и от stream
. Обикновено ofstream
поддържа само изходни операции (т.е. текстов файл ‹‹ "здравей"), докато fstream
поддържа както изходни, така и входни операции, но в зависимост от флаговете, дадени при отваряне на файла. Във вашия пример отвореният режим е ios_base::in | ios_base::out
по подразбиране. Стандартният отворен режим на ofstream
е ios_base::out
. Освен това, ios_base::out
винаги е зададено за ofstream обекти (дори ако изрично не е зададено в режим аргумент).
Използвайте ofstream
, когато textfile
е само за изход, ifstream
само за вход, fstream
както за вход, така и за изход. Това прави намерението ви по-ясно.
c++ fstream
. Какви са другите предимства на cppreference.com пред cplusplus.com?
- person Danqi Wang; 24.04.2014