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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
The New Guy
0 / 0 / 0
Регистрация: 01.07.2015
Сообщений: 6
#1

Использование ifstream в VSC++ - C++

01.08.2015, 20:33. Просмотров 282. Ответов 4
Метки нет (Все метки)

Вопрос, хочу поработать с файлом, но программу готовую нужно унести в другое место, поэтому абсолютный адрес для доступа к файлу использовать нельзя. Делаю в вижуал студии, если положить файлы в дебаг и папку проекта, тогда всё работает правильно, если как то иначе, то вылезает или один ноль на консоль, или бесконечное количество нулей. Нужно чтобы все файлы лежали в одном месте в двух хранить не вариант. вот код:

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
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <cstring>
 
using namespace std;
 
unsigned int CRC32_function(unsigned char *buf, unsigned long len)
{
unsigned long crc_table[256];
unsigned long crc;
for (int i = 0; i < 256; i++)
{
crc = i;
for (int j = 0; j < 8; j++)
crc = crc & 1 ? (crc >> 1) ^ 0xEDB88320UL : crc >> 1;
crc_table[i] = crc;
};
crc = 0xFFFFFFFFUL;
while (len--)
crc = crc_table[(crc ^ *buf++) & 0xFF] ^ (crc >> 8);
return crc ^ 0xFFFFFFFFUL;
}
 
//возвращание конечного CRC32. Достаточно вызвать эту функцию и указать имя файла, для которого будет произведён расчёт
unsigned int CRC32_count(char* filename){
    char buf[4096*64]; //сколько символов в файле, на самом деле, это должно быть больше, 2^31-1 будет для файла размером 2ГБ
    ifstream f (filename,std::ios::binary);
    f.read(buf,4096*64);
    return CRC32_function((unsigned char*)buf, f.gcount());
}
 
int _tmain(int argc, _TCHAR* argv[])
{
        std::fstream fin;
        std::string buf;
        fin.open("files.txt");
        while(!fin.eof()) {
        std::getline(fin, buf);
        char *chrstr=new char[buf.length()+1];
        strcpy(chrstr, buf.c_str());
        int len=CRC32_count(chrstr);
        std::cout<<len;
        }  
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2015, 20:33     Использование ifstream в VSC++
Посмотрите здесь:

VSC++ и DLL - C++
У меня возникла такая проблемка,есть проект в Visual Studio 2008 C++, из него нужно скомпилить DLL. Сам я с С++ вообще не сталкивался, так...

Различия ifstream::get() и ifstream::get(ch) - C++
Доброго времени суток. Была тут тема, в которой я не разобрался до конца. Код ниже проверяет баланс скобок в текстовом файле #include...

ifstream - C++
Привет всем такая проблема ввода Student* s;// студенты s = new Student; ifstream fin(&quot;Student.txt&quot;); for(int i(0); i &lt; l;...

Объект ifstream!!! - C++
Скажите пожалуйста, почему при создании объекта ifstream(например fin) и привязке его к определенному файлу (ifstream fin(filename);), и...

fstream ifstream - C++
подключил библиотеку fstream создал объект ifstream file открыл файл, поработал(считывал до конца &lt; eof()) сделал file.close(); ...

ifstream считывает 0 - C++
Здравствуйте. Есть 2 текстовых файла с названиями n.in n.out .Содержимое входящего файла 1 5 2 4 3 9 4 7 5

Объект ifstream!!! - C++
Почему при попытке повторного вывода содержимого файла он не выводится???? Почему не работает эта строка: fin.open(fileName); ???? Вот...

Ifstream ошибка - C++
int main(int argc, char* argv) { setlocale(LC_ALL,&quot;Russian&quot;); // корректное отображение Кириллицы char buff; // буфер...

не работает в ifstream - C++
Сам очень плохо разбираюсь в &lt;fstream&gt; Вот код, который должен &quot;записывать и выводить&quot; данные из ранее записанного текстового документа: ...

Unget and ifstream - C++
Я правильно понимаю, что если ifstream in; string str1; in &gt;&gt; str1, то unget обратно эту строку вернет?

Ifstream и eof в нем - C++
Имеется код: int main() { setlocale(LC_ALL, &quot;rus&quot;); // корректное отображение Кириллицы char abc; ofstream fout(&quot;ofstream...

Fseek() для ifstream - C++
Знаю, что есть два вида открытия и закрытие файла. 1) Это чистый Си, когда: FILE * pf, * pr; pf = fopen(&quot;new1.txt&quot;, &quot;r&quot;); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
01.08.2015, 21:09     Использование ifstream в VSC++ #2
В смысле второй файл не открывается?

И нахрена все эти манипуляции со строками? Я имею ввиду, сначала в string, потом в динамическую память копируете, которую потом же и не освобождаете.
The New Guy
0 / 0 / 0
Регистрация: 01.07.2015
Сообщений: 6
01.08.2015, 21:31  [ТС]     Использование ifstream в VSC++ #3
Ну всё это только первоначальная часть хитрой программы. Мне надо обработать массив файлов, я открываю files.txt в котором лежит список файлов для которых я буду искать контрольную сумму CRC32, тип там можно наверно действительно заменить на string уже, это осталась в наследие конструкция от прошлого варианта которая должна была это значение отправлять в OpenFile. Вообще делаю вот такое Задан набор бинарных файлов. Разработать на C++ компонент, который фиксирует начальное состояние этих файлов и позволяет обнаружить факт любых изменений в их содержимом (детализация изменений не требуется, необходимо только обнаружить, что изменения имели место с указанием списка изменившихся файлов).

Предполагается, что компонент будет представлять собой небольшое количество исходных текстов на C++ ,использовать Win32 API и, возможно, библиотеки ATL, STL, boost и т.д.

План был такой:
1)проверяем есть ли файл checksums.txt
2)если нет то это 1-ый пуск, открываем файл files.txt читаем из него файлы, считаем хэши, создаем файл checksums.txt записываем посчитанные хэши и выходим
3)если есть то открываем files.txt читаем список файлов, открываем checksums.txt, читаем список старых хэшей, рассчитываем новые хэши, получаем массив если какой-то изменился говорим это
lss
921 / 851 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
01.08.2015, 22:11     Использование ifstream в VSC++ #4
Цитата Сообщение от The New Guy Посмотреть сообщение
Нужно чтобы все файлы лежали в одном месте в двух хранить не вариант. вот код:
Запускай единообразно тогда: или из среды, тогда файлы должны быть в папке проекта, или сам .exe, тогда файлы должны быть рядом с .exe.
The New Guy
0 / 0 / 0
Регистрация: 01.07.2015
Сообщений: 6
02.08.2015, 00:10  [ТС]     Использование ifstream в VSC++ #5
Спасибо, проблема была в том что список с файлами содержал абсолютные адреса, заменил на просто названия файлов всё заработало.
Yandex
Объявления
02.08.2015, 00:10     Использование ifstream в VSC++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru