diff options
clean up
4 files changed, 0 insertions, 156 deletions
| -rw-r--r-- | Sem. 03/README.md | 129 | ||||
| -rw-r--r-- | Sem. 03/binaryFileExample.cpp | 0 | ||||
| -rw-r--r-- | Sem. 03/notes_03.pdf | bin | 122659 -> 0 bytes | |||
| -rw-r--r-- | Sem. 03/sizeFile.cpp | 27 |
diff --git a/Sem. 03/README.md b/Sem. 03/README.md deleted file mode 100644 index 6439ced..0000000 --- a/Sem. 03/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# Файлове (част 2). Двоични файлове. - -## Режими за работа с файлове - - -| Режим:| Ефект: | -|--------|------------------------------------------------------------------------------| -|ios::in |Отваря файл за четене (по подразбиране на ifstream) | -|ios::out |Отваря файл за четене (по подразбиране на ofstream) | -|ios::binary | Отваря файл в двоичен режим | -|ios::trunc | Ако файлът съществува, съдържанието му се изтрива след отваряне на поток | -|ios::app | Отваря файлът за вмъкване. Поставя put указателят в края. Не се допуска вмъкване преди края на потока | -|ios::ate | Отваря файлът за вмъкване. Поставя put указателят в края. Допуска вмъкване на прозиволни места | -|ios::nocreate | Отваря за вмъкване, само ако файлът с указаното име съществува.| -ios::noreplace | Отваря за вмъкване само ако файлът с указаното име не съществува.| -### Пример: - ```c++ -#include <iostream> -#include <fstream> -using namespace std; -int main() -{ - fstream f("test.txt", ios::out | ios::app); - - if (!f.is_open()) - { - cout << "Error while opening file!" << endl; - return -1; - } - f << 33; //appends at the end of the file - - f.close(); - return 0; -} - ``` -## Флагове на състоянията на потока -| Флаг:| Значение: | -|--------|------------------------------------------------------------------------------| -|bad() | Има загуба на информация. Някоя операция за четене и писане не е изпълнена. | -|fail() |Последната входно/изходна операция е невалидна.| -| eof() | Достигнат е края на файла. | -|good() | Всички операции са изпълнени успешно.| -|clear()| Изчиства състоянието на потока (Вече good() ще върне истина).| - -## Позициониране във файл - - - tellg() - Връща позцития на текущия символ в **потока за четене** - - tellp() - Връща позцития на текущия символ в **потока за писане** - - seekg(offset, direction) - Премества get-указателят на позцития на **потока за четене**. - - seekp(offset, direction) - Премества put-указателят на позцития на **потока за писане**. - - - -**offset** : целочислена стойност. Отместването от direction. - - -**direction** : Може да заема следите стойностти: - -1. ios::beg - началото на файла. -2. ios::cur - текущата позиция във файла. -3. ios::end - края на файла. - -### Пример: - ```c++ -#include <iostream> -#include <fstream> -using namespace std; -size_t getFileLen(std::ifstream& ifs) //we can pass stream to functions. -{ - - ifs.seekg(0, std::ios::end); //set the position at the end of the file - size_t size = ifs.tellg(); //get the curren position - ifs.seekg(0, std::ios::beg); //set the position at the beginning - - return size; -} - ``` -## Двоични файлове. - -Изпоилзваме функциите: - -1. .read(char* memoryBlock, size_t size); -2. .write(const char* memoryBlock, size_t size); - -Обърнете внимание, че функцията приема **char***. Ако искаме да запазим променлива от друг вид, ще трябва експлицитно да преобразуваме указателя към тип char* (без значение, че указателят не сочи към елементи от тип char) - -### Пример за писане в двоичен файл: - ```c++ -#include <iostream> -#include <fstream> - -using namespace std; - -int main() -{ - ofstream f("file.dat"); - - int a = 155555; - - f.write((const char*)&a, sizeof(int)); - - return 0; -} - ``` - ### Пример за четене от двоичен файл: - - ```c++ -#include <iostream> -#include <fstream> - -using namespace std; - -int main() -{ - ifstream f("file.dat"); - - int a; - - f.read((char*)&a, sizeof(int)); - - cout << a << endl; - - return 0; -} - ``` - - ### Съдържанието на двоичния файл: -  - -Байтовете се записват в **обратна посока**. Най-старшият байт е последен. Следователно запаментеното число е **00025fa3**, което е точно шестанйсетичния запис на числото **155555**. - diff --git a/Sem. 03/binaryFileExample.cpp b/Sem. 03/binaryFileExample.cpp deleted file mode 100644 index e69de29..0000000 --- a/Sem. 03/binaryFileExample.cpp +++ /dev/null diff --git a/Sem. 03/notes_03.pdf b/Sem. 03/notes_03.pdf Binary files differdeleted file mode 100644 index 0200d97..0000000 --- a/Sem. 03/notes_03.pdf +++ /dev/null diff --git a/Sem. 03/sizeFile.cpp b/Sem. 03/sizeFile.cpp deleted file mode 100644 index 862d565..0000000 --- a/Sem. 03/sizeFile.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include <iostream> -#include <fstream> - -using namespace std; - -size_t getFileSize(const char* fileName) -{ - ifstream f(fileName); - - if (!f.is_open()) - return 0; - - f.seekg(0, ios::end); - size_t pos = f.tellg(); - - f.close(); - - return pos; -} -int main() -{ - - - cout << getFileSize("sizeFile.cpp") << endl; - - return 0; -}
\ No newline at end of file |
