Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet163/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   159   160   161   162   163   164   165   166   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Таблица 10.2. Режимы открытия файла



Комбинация флагов ios

Эквивалент


stdio

binary

in

out

trunc

app







+







"w"




+




+

"a"




+

+




"w"

+










"r"

+

+







"r+"

+

+

+




"w+"

+




+







"wb"

+




+




+

"ab"

+




+

+




"wb"

+

+










"rb"

+

+

+







"r+b"

+

+

+

+




"w+b"

Îòêðûòü ôaéë â ïðîãðaììå ìîæíî ñ èñïîëüçîâaíèåì ëèáî êîíñòðóêòîðîâ, ëèáî ìåòîäa Open, èìåþùåãî òaêèå æå ïaðaìåòðû, êaê è â ñîîòâåòñòâóþùåì êîíñòðóê- òîðå, íaïðèìåð:
ifstream inpf ("input.txt"); // Èñïîëüçîâaíèå êîíñòðóêòîða if (!inpf){
COut << "Íåâîçìîzíî îòêðûòü ôaéë äëя ÷òåíèя"; return 1;

}
Ostream f;


f.Open("Output.txt", iOs::Out); // Èñïîëüçîâaíèå ìåòîäa Open if (!f){
COut << "Íåâîçìîzíî îòêðûòü ôaéë äëя çaïèñè"; return 1;
}
×òåíèå è çaïèñü âûïîëíяþòñя ëèáî ñ ïîìîùüþ îïåðaöèé ÷òåíèя è èçâëå÷åíèя, aíaëîãè÷íûõ ïîòîêîâûì êëaññaì, ëèáî ñ ïîìîùüþ ìåòîäîâ êëaññîâ.
Ïðèìåð èñïîëüçîâaíèя ìåòîäîâ (ïðîãðaììa âûâîäèò ía ýêðaí ñîäåðæèìîå ôaéëa):
inClude int main(){
Char text[81], buf[81];
COut << "Ââåäèòå èìя ôaéëa:"; Cin >> text;
ifstream f(text); if (!f){
COut << "Îøèáêa îòêðûòèя ôaéëa"; return 1;
}
while (!f.eOf()){ f.getline(buf, 81); COut << buf << endl;
}
return 0;
}
Äëя çaêðûòèя ïîòîêa îïðåäåëåí ìåòîä ClOse(), íî ïîñêîëüêó îí íåяâíî âûïîëíяåò- ñя äåñòðóêòîðîì, яâíûé âûçîâ íåîáõîäèì òîëüêî òîãäa, êîãäa òðåáóåòñя çaêðûòü ïîòîê ðaíüøå êîíöa åãî îáëañòè âèäèìîñòè.


Строковые потоки


Còðîêîâûå ïîòîêè ïîçâîëяþò ñ÷èòûâaòü è çaïèñûâaòü èíôîðìaöèþ èç îáëañòåé îïåðaòèâíîé ïaìяòè òaê æå, êaê èç ôaéëa, ñ êîíñîëè èëè ía äèñïëåé.  ñòaíäaðò- íîé áèáëèîòåêå îïðåäåëåíî òðè êëañña ñòðîêîâûõ ïîòîêîâ1:
istringstream — âõîäíûå ñòðîêîâûå ïîòîêè; Ostringstream — âûõîäíûå ñòðîêîâûå ïîòîêè; stringstream — äâóíaïðaâëåííûå ñòðîêîâûå ïîòîêè.
Ýòè êëaññû îïðåäåëяþòñя â çaãîëîâî÷íîì ôaéëå 2 è яâëяþòñя ïðîèç- âîäíûìè îò êëaññîâ istream, Ostream è iOstream ñîîòâåòñòâåííî, ïîýòîìó îíè ía-


1 Â ñòaðûõ âåðñèяõ êîìïèëяòîðîâ ýòè êëaññû ìîãóò èìåòü äðóãèå íaçâaíèя.
2  ñòaðûõ âåðñèяõ êîìïèëяòîðîâ çaãîëîâî÷íûé ôaéë ìîæåò èìåòü èìя .

ñëåäóþò ïåðåãðóæåííûå îïåðaöèè << è >>, ôëaãè ôîðìaòèðîâaíèя, ìaíèïóëяòî- ðû, ìåòîäû, ñîñòîяíèå ïîòîêîâ è ò. ä.


Ó÷añòêè ïaìяòè, ñ êîòîðûìè âûïîëíяþòñя îïåðaöèè ÷òåíèя è èçâëå÷åíèя, ïî ñòaíäaðòó îïðåäåëяþòñя êaê ñòðîêè C++ (êëaññ string). Còðîêîâûé êëaññ ðañ- ñìaòðèâaåòñя ía ñ. 286. Còðîêîâûå ïîòîêè ñîçäaþòñя è ñâяçûâaþòñя ñ ýòèìè ó÷a- ñòêaìè ïaìяòè ñ ïîìîùüþ êîíñòðóêòîðîâ:
expliCit1 istringstream(int mOde = iOs::in);
expliCit istringstream(COnst string& name, int mOde = iOs::in); expliCit Ostringstream(int mOde = iOs::Out);
expliCit Ostringstream(COnst string& name, int mOde = iOs::Out); expliCit stringstream(int mOde = iOs::in | iOs::Out);
expliCit stringstream(COnst string& name, int mOde = iOs::in | iOs::Out);
Còðîêîâûå ïîòîêè яâëяþòñя íåêîòîðûì aíaëîãîì ôóíêöèé ssCanf è sprintf áèá- ëèîòåêè C è ìîãóò ïðèìåíяòüñя äëя ïðåîáðaçîâaíèя äaííûõ, êîãäa îíè çaíîñяò- ñя â íåêîòîðûé ó÷añòîê ïaìяòè, a çaòåì ñ÷èòûâaþòñя â âåëè÷èíû òðåáóåìûõ òè- ïîâ. Ýòè ïîòîêè ìîãóò ïðèìåíяòüñя òaêæå äëя îáìåía èíôîðìaöèåé ìåæäó ìîäóëяìè ïðîãðaììû.
 ñòðîêîâûõ ïîòîêaõ îïèñaí ìåòîä str, âîçâðaùaþùèé êîïèþ ñòðîêè èëè óñòa- íaâëèâaþùèé åå çía÷åíèå:
string str() COnst;
vOid str(COnst string & s);
Ïðîâåðяòü ñòðîêîâûé ïîòîê ía ïåðåïîëíåíèå íå òðåáóåòñя, ïîñêîëüêó ðaçìåð ñòðîêè èçìåíяåòñя äèíaìè÷åñêè.
 ïðèâåäåííîì íèæå ïðèìåðå ñòðîêîâûé ïîòîê èñïîëüçóåòñя äëя ôîðìèðîâaíèя ñîîáùåíèя, âêëþ÷aþùåãî òåêóùåå âðåìя è ïåðåäaâaåìûé â êa÷åñòâå ïaðaìåòða íîìåð:
inClude inClude inClude inClude using namespaCe std;
string message( int i){ Ostringstream Os; time_t t;
time(&t);
Os << " time: " << Ctime(&t) << " number: " << i << endl; return Os.str();
}
int main(){
COut << message(22); return 0;
}


1 cì. ñ. 197.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   159   160   161   162   163   164   165   166   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish