diff options
1 files changed, 35 insertions, 35 deletions
| -rw-r--r-- | Sem. 03/README.md | 70 |
diff --git a/Sem. 03/README.md b/Sem. 03/README.md index efd06d2..bc43664 100644 --- a/Sem. 03/README.md +++ b/Sem. 03/README.md @@ -1,17 +1,17 @@ -# Ôàéëîâå (÷àñò 2). Äâîè÷íè ôàéëîâå. +# Файлове (чаÑ�Ñ‚ 2). Двоични файлове. -## Ðåæèìè çà ðàáîòà ñ ôàéëîâå +## Режими за работа Ñ� файлове -| Ðåæèì:| Åôåêò: | +| Режим:| Ефект: | |--------|------------------------------------------------------------------------------| -|ios::in |Îòâàðÿ ôàéë çà ÷åòåíå (ïî ïîäðàçáèðàíå íà ifstream) | -|ios::out |Îòâàðÿ ôàéë çà ÷åòåíå (ïî ïîäðàçáèðàíå íà ofstream) | -|ios::binary | Îòâàðÿ ôàéë â äâîè÷åí ðåæèì | -|ios::trunc | Àêî ôàéëúò ñúùåñòâóâà, ñúäúðæàíèåòî ìó ñå èçòðèâà ñëåä îòâàðÿíå íà ïîòîê | -|ios::app | Îòâàðÿ ôàéëúò çà âìúêâàíå. Ïîñòàâÿ put óêàçàòåëÿò â êðàÿ. Íå ñå äîïóñêà âìúêâàíå ïðåäè êðàÿ íà ïîòîêà | -|ios::ate | Îòâàðÿ ôàéëúò çà âìúêâàíå. Ïîñòàâÿ put óêàçàòåëÿò â êðàÿ. Äîïóñêà âìúêâàíå íà ïðîçèâîëíè ìåñòà | -### Ïðèìåð: +|ios::in |ОтварÑ� файл за четене (по подразбиране на ifstream) | +|ios::out |ОтварÑ� файл за четене (по подразбиране на ofstream) | +|ios::binary | ОтварÑ� файл в двоичен режим | +|ios::trunc | Ð�ко файлът Ñ�ъщеÑ�твува, Ñ�ъдържанието му Ñ�е изтрива Ñ�лед отварÑ�не на поток | +|ios::app | ОтварÑ� файлът за вмъкване. ПоÑ�тавÑ� put указателÑ�Ñ‚ в краÑ�. Ð�е Ñ�е допуÑ�ка вмъкване преди краÑ� на потока | +|ios::ate | ОтварÑ� файлът за вмъкване. ПоÑ�тавÑ� put указателÑ�Ñ‚ в краÑ�. ДопуÑ�ка вмъкване на прозиволни меÑ�та | +### Пример: ```c++ #include <iostream> #include <fstream> @@ -31,32 +31,32 @@ int main() return 0; } ``` -# Ôëàãîâå íà ñúñòîÿíèÿòà íà ïîòîêà -| Ôëàã:| Çíà÷åíèå: | +## Флагове на Ñ�ÑŠÑ�тоÑ�ниÑ�та на потока +| Флаг:| Значение: | |--------|------------------------------------------------------------------------------| -|bad() | Èìà çàãóáà íà èíôîðìàöèÿ. Íÿêîÿ îïåðàöèÿ çà ÷åòåíå è ïèñàíå íå å èçïúëíåíà. | -|fail() |Ïîñëåäíàòà âõîäíî/èçõîäíà îïåðàöèÿ å íåâàëèäíà.| -| eof() | Äîñòèãíàò å êðàÿ íà ôàéëà. | -|good() | Âñè÷êè îïåðàöèè ñà èçïúëíåíè óñïåøíî.| -|clear()| Èç÷èñòâà ñúñòîÿíèåòî íà ïîòîêà (Âå÷å good() ùå âúðíå èñòèíà).| +|bad() | Има загуба на информациÑ�. Ð�Ñ�коÑ� операциÑ� за четене и пиÑ�ане не е изпълнена. | +|fail() |ПоÑ�ледната входно/изходна операциÑ� е невалидна.| +| eof() | ДоÑ�тигнат е краÑ� на файла. | +|good() | Ð’Ñ�ички операции Ñ�а изпълнени уÑ�пешно.| +|clear()| ИзчиÑ�тва Ñ�ÑŠÑ�тоÑ�нието на потока (Вече good() ще върне иÑ�тина).| -## Ïîçèöèîíèðàíå âúâ ôàéë +## Позициониране във файл - - tellg() - Âðúùà ïîçöèòèÿ íà òåêóùèÿ ñèìâîë â **ïîòîêà çà ÷åòåíå** - - tellp() - Âðúùà ïîçöèòèÿ íà òåêóùèÿ ñèìâîë â **ïîòîêà çà ïèñàíå** - - seekg(offset, direction) - Ïðåìåñòâà get-óêàçàòåëÿò íà ïîçöèòèÿ íà **ïîòîêà çà ÷åòåíå**. - - seekp(offset, direction) - Ïðåìåñòâà put-óêàçàòåëÿò íà ïîçöèòèÿ íà **ïîòîêà çà ïèñàíå**. + - tellg() - Връща позцитиÑ� на текущиÑ� Ñ�имвол в **потока за четене** + - tellp() - Връща позцитиÑ� на текущиÑ� Ñ�имвол в **потока за пиÑ�ане** + - seekg(offset, direction) - ПремеÑ�тва get-указателÑ�Ñ‚ на позцитиÑ� на **потока за четене**. + - seekp(offset, direction) - ПремеÑ�тва put-указателÑ�Ñ‚ на позцитиÑ� на **потока за пиÑ�ане**. - -**offset** : öåëî÷èñëåíà ñòîéíîñò. Îòìåñòâàíåòî îò direction. + -**offset** : целочиÑ�лена Ñ�тойноÑ�Ñ‚. ОтмеÑ�тването от direction. - -**direction** : Ìîæå äà çàåìà ñëåäèòå ñòîéíîñòòè: + -**direction** : Може да заема Ñ�ледите Ñ�тойноÑ�тти: -1. ios::base::beg - íà÷àëîòî íà ôàéëà. -2. ios::base::cur - òåêóùàòà ïîçèöèÿ âúâ ôàéëà. -3. ios::base::end - êðàÿ íà ôàéëà. +1. ios::base::beg - началото на файла. +2. ios::base::cur - текущата позициÑ� във файла. +3. ios::base::end - краÑ� на файла. -### Ïðèìåð: +### Пример: ```c++ #include <iostream> #include <fstream> @@ -71,16 +71,16 @@ size_t getFileLen(std::ifstream& ifs) //we can pass stream to functions. return size; } ``` -## Äâîè÷íè ôàéëîâå. +## Двоични файлове. -Èçïîèëçâàìå ôóíöêèèòå: +Изпоилзваме фунцкиите: 1. .read(char* memoryBlock, size_t size); 2. .write(char* memoryBlock, size_t size); -Îáúðíåòå âíèìàíèå, ÷å ôóíêöèÿòà ïðèåìà **char***. Àêî èñêàìå äà çàïàçèì ïðîìåíëèâà îò äðóã âèä, ùå òðÿáâà åêñïëèöèòíî äà ïðåîáðàçóâàìå óêàçàòåëÿ êúì òèï char* (áåç çíà÷åíèå, ÷å óêàçàòåëÿò íà ñî÷è êúì ìàñèâ îò òîçè òèï) +Обърнете внимание, че функциÑ�та приема **char***. Ð�ко иÑ�каме да запазим променлива от друг вид, ще трÑ�бва екÑ�плицитно да преобразуваме указателÑ� към тип char* (без значение, че указателÑ�Ñ‚ на Ñ�очи към маÑ�ив от този тип) -### Ïðèìåð çà ïèñàíå â äâîè÷åí ôàéë: +### Пример за пиÑ�ане в двоичен файл: ```c++ #include <iostream> #include <fstream> @@ -98,7 +98,7 @@ int main() return 0; } ``` - ### Ïðèìåð çà ÷åòåíå îò äâîè÷åí ôàéë: + ### Пример за четене от двоичен файл: ```c++ #include <iostream> @@ -120,8 +120,8 @@ int main() } ``` - ### Ñúäúðæàíèåòî íà äâîè÷íèÿ ôàéë: + ### Съдържанието на двоичниÑ� файл:  -Áàéòîâåòå ñå çàïèñâàò â **îáðàòíà ïîñîêà**. Íàé-ñòàðøèÿò áàéò å ïîñëåäåí. Ñëåäîâàòåëíî çàïàìåíòåíîòî ÷èñëî å **00025fa3**, êîåòî å òî÷íî øåñòàíéñåòè÷íèÿ çàïèñ íà ÷èñëîòî **155555**. +Байтовете Ñ�е запиÑ�ват в **обратна поÑ�ока**. Ð�ай-Ñ�таршиÑ�Ñ‚ байт е поÑ�леден. Следователно запаментеното чиÑ�ло е **00025fa3**, което е точно шеÑ�танйÑ�етичниÑ� запиÑ� на чиÑ�лото **155555**. |
