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

Отредактировать файл не загружая в память - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись в начало массива http://www.cyberforum.ru/cpp-beginners/thread947729.html
Добрый день , как записать слово в двумерный массив начинаю к примеру с третьей ячейки нулевой строки.? char Array="beleberda"
C++ Метод Ньютона Отделить любой действительный корень ур-ия f(x)=0 и вычислить его методом Ньютона с точностью e=10^-4. Ур-ие : arccos(x^2)-x http://www.cyberforum.ru/cpp-beginners/thread947726.html
C++ почему когда ты ввел 6, не выдалась фраза что можно вводить только 1, 2 или 3
почему когда ты ввел 6, не выдалась фраза что можно вводить только 1, 2 или 3
Записать по-битово в файл C++
Нужно записать по-битово в файл. Вот на етой строке компилятор кидает ошибку out.write((*char)&this, sizeof(car)); #include"iostream" #include"fstream" using namespace std;
C++ У меня ошибка? Поможете http://www.cyberforum.ru/cpp-beginners/thread947680.html
int __fastcall TZash::LoadCharSet(const String& sInput) { if (sInput.Length() < 2) return 0; String sTemp = sInput; String sParsed; int nI, nPos; if (sTemp == '")) > 2)
C++ Виртуальность и наследование Очень интересный вопрос! #include <iostream> class Super { public: virtual void print() const { std::cout << __PRETTY_FUNCTION__ << std::endl; } public: virtual ~Super() {} }; подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.09.2013, 22:56     Отредактировать файл не загружая в память
Если блоками читать:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <fstream>
#include <iostream>
using namespace std;
 
void showfile(fstream &f)
{
    f.clear();
    f.seekg(0);
    char temp;
    while (f.read(&temp, 1))
    {
        cout << temp;
    }
    cout << endl << endl;
    f.clear();
    f.seekg(0);
}
 
int main()
{
    fstream f("data.txt", ios::in | ios::out | ios::binary);
    if (!f) cout << "Error!" << endl;
    else
    {
        showfile(f); // демонстрация
        
        streamoff cf1 = 0;
        
        char arr[3];
        f.read(arr, 3);
        
        streamoff cf2 = f.tellg();
        
        const int b_size = 4; // размер блока чтения
        char temp[b_size];
        
        int n = 0; // количество считанных байтов
        while(true)
        {
            f.read(temp, b_size);
            f.clear();
            
            int n = f.gcount();
            if (n == 0) break;
            
            cf2 += n;
            
            f.seekp(cf1);
            f.write(temp, n);
            f.flush();
            cf1 += n;
            
            f.seekp(cf2);
        } 
        f.clear();
        
        f.seekp(-3, ios::end);
        
        f.write(arr, 3);
        f.flush();
        
        showfile(f); // демонстрация
        f.close();
    }
 
    return 0;
}
 
Текущее время: 17:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru