Форум программистов, компьютерный форум CyberForum.ru

программа копирования файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно доделать код! http://www.cyberforum.ru/cpp-beginners/thread114040.html
матрица представляет собой вектор векторов (это не моя желание, это требование к лабораторной работе) #include <iostream> #include <vector> #include <ctime> using namespace std; typedef vector<int> row; typedef vector<row> matrix; matrix vvod(int m, int n)//функция создает матрицу (вектор векторов) {
C++ error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? error c2731 winmain функция не может быть перегружена. Как убрать данную ошибку? http://www.cyberforum.ru/cpp-beginners/thread114020.html
C++ Построчная запись в EditBox
Как реализовать построчную запись в EditBox в vc++, чтобы, например, при нажатии на кнопку добавлялась новая строчка? case IDC_UP: { string str; const int size = GetWindowTextLength(edtBox); GetWindowText(edtBox,&str,size); str.append("UP\r\n"); SetWindowText(edtBox,&str);
C++ Сумма двух чисел
Всем привет! Есть два числа X и Y, проблема в том что они очень большие и не подходят ни к одному типу... Суммировать их надо в столбик. В чем хранить такие большие числа???(может в строках)? Добавлено через 2 часа 41 минуту использовал строки: freopen("out.txt", "rt", stdin); string x;
C++ Прямой файловый ввод- вывод http://www.cyberforum.ru/cpp-beginners/thread113997.html
ребят я не знаю как делать ету лабу помогите плз
C++ Запись данных в файл Есть программа "телефонный справочник", которая считывает данные, а потом по требованию выводит их на экран. Как сделать, что бы она записывала эти данные в .txt файл? #include <iostream.h> #include <string.h> struct record { char name; char surname; char phone; char city; подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.04.2010, 10:36     программа копирования файла
Мысли такие:
1. Открываешь файл для чтения.
2. Организовываешь буфер копирования размером в один блок (например, 16Кб). Так если файл будет 3Гб, то его не придется целиком заталкивать в память.
3. Создаешь файл-копию.
4. Последовательно блок за блоком через буфер копируешь файлы.

Добавлено через 20 минут
То есть примерно вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <fstream>
#include <string>
 
int main()
{
    // Размер буфера 
    const int buf_size = 15638;
 
    // Имя исходного файла
    std::string src_file = "file.txt";
    std::string out_file = "file_copy.txt";
    
    // Создание потока для работы с исходным файлом
    std::ifstream ifs(src_file.c_str(), std::ios::binary);
 
    // Подсчет размер исходного файла
    ifs.seekg(0, std::ios::end);
    std::ios::pos_type src_size = ifs.tellg();
    ifs.seekg(0, std::ios::beg);
 
    // Количество целых проходов (для частей файлы, которые полностью умещаются в буфер)
    size_t a_mount = src_size / buf_size;
    // Остаток (остаток файла)
    size_t b_mount = src_size % buf_size;
 
    
    // Создание потока для файла-копии
    std::ofstream ofs(out_file.c_str(), std::ios::binary);
 
    // Это буфер
    char buf[buf_size];
 
    // Цикл по числу полных проходов
    for(size_t i = 0; i < a_mount; ++i)
    {
        ifs.read(buf, buf_size);
        ofs.write(buf, buf_size);
    }
    
    // Если есть остаток
    if(b_mount != 0)
    {
        ifs.read(buf, b_mount);
        ofs.write(buf, b_mount);
    }
 
    ifs.close();
    ofs.close();
 
    return 0;
}
 
Текущее время: 18:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru