while(in){
...
}
Чтение файлов,Строки
Мне нужно прочитать содержимое файла в строку.Делаю так:
string fc;//строка с содержиммым файла
char buff[1024];
while(!in.eof())
{
in.getline(buff,sizeof(buff));
fc.append(buff);
}
in.close();
Всё нормально работает если размер файла не больше 2KB. Иначе прога виснет на несколько минут, а затем выдаёт Исключение Вида: raised exception class std::bad_alloc with message 'Exception Object Address..'
Пробовал увеличить размер buff - работает если размер buff превосходит размер файла. Но такой вариант не подходит. Подскажите как можно выйти из этой ситуации. Заранее благодарен.
Мне нужно прочитать содержимое файла в строку.Делаю так:
string fc;//строка с содержиммым файла
char buff[1024];
while(!in.eof())
{
in.getline(buff,sizeof(buff));
fc.append(buff);
}
in.close();
Всё нормально работает если размер файла не больше 2KB. Иначе прога виснет на несколько минут, а затем выдаёт Исключение Вида: raised exception class std::bad_alloc with message 'Exception Object Address..'
Пробовал увеличить размер buff - работает если размер buff превосходит размер файла. Но такой вариант не подходит. Подскажите как можно выйти из этой ситуации. Заранее благодарен.[/QUOTE]
Проверяй поток на ошибки.
Делай или так:
Код:
или так:
Код:
while(!in.eof&&!in.fail())
{
...
}
{
...
}
Проблема не в размере буфера.
З.Ы. И приводя свой код, используй пожалуйста форматирование.
Код:
string str;
getline(in, str);
getline(in, str);
если надо чего то объяснить обращайся
Код:
FILE *ReadF;
ReadF=fopen(FileName.c_str(), "r");
char rline[84];
do{
fgets(rline,84,ReadF);
if (feof(ReadF)) break;
if (rline[strlen(rline)-1]== '\n') rline[strlen(rline)-1]=0;
}while(true);
fclose(ReadF);
ReadF=fopen(FileName.c_str(), "r");
char rline[84];
do{
fgets(rline,84,ReadF);
if (feof(ReadF)) break;
if (rline[strlen(rline)-1]== '\n') rline[strlen(rline)-1]=0;
}while(true);
fclose(ReadF);
кстати такой код перебирает за 2-3 минуты 5-6 тысяч файлов
в каждом файле от 1 до 5000 строк