Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Быстрое чтение большого файла


Автор: artstalker 18.5.2010, 21:12
Всем доброго времени суток. Есть задача прочитать файл(1-20 мб), который состоит из слов разделённых пробелами для того, чтобы переписать все слова в массив string-ов. Затем с этими словами проводятся операции и все они записываются уже в другой файл. Однако, после выполнения задачи и закрытия приложения, процесс остаётся висеть в диспетчере. А в описании процесса пишется "TODO: <File description>". Чтение/запись выполняю так:
Код

ifstream message_file;
ofstream enc_file;
int i;
string s;
message_file.open("D:\\1\\input_file.txt");

i=0;
string *masInString=new string[300000];
string *masOutString=new string[300000];

while (!message_file.eof())
{
    message_file>>s;
    i++;
    masInString[i]=s;
}
message_file.close();

..........

enc_file.open("D:\\1\\output_file.txt.txt");
for (int k=1;k<=i;k++)
    {
        enc_file<<masInString[k];
    }
enc_file.close();

Подскажите. Как решить проблему с зависаниями?

Автор: boostcoder 19.5.2010, 00:03
тяжелый код помести в поток.
http://msdn.microsoft.com/ru-ru/library/kdzttdcb%28VS.90%29.aspx
http://msdn.microsoft.com/en-us/library/ms885186.aspx

Автор: artstalker 19.5.2010, 00:42
boostcoder, нет, вы не так поняли. Процесс зависает уже после выполнения. Второй поток мне ни к чему, т.к. во время выполнения задачи мне не нужен отзывчивый интерфейс. Тем более что вся эта операция занимает от 1 до 10 секунд.

Автор: Annihilator 20.5.2010, 11:30
Кинь проект полностью вместе с файлами txt

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)