Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 804
от 23.07.2007, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 491, Экспертов: 57
В номере:Вопросов: 3, Ответов: 6


Вопрос № 95493: Доброго времени суток! Продолжу тему STL. Из ответов на мой предыдущий вопрос № 94826 я для себя выяснил, что VC6+SP5 иногда некорректно работает с STL. Решил тогда я создать dll-ку с нужной мне ф-цией в VC2005 или через gcc под Вин...
Вопрос № 95498: Ув. эксперты(Шинтяков Дмитрий Васильевич), я вызываю рекурсию очень много раз и происходит переполнение стека Вы сказали что объеи стека можно менять, как это можно сделать? > Обычно объёма стека хватает, а вообще его можно менять...
Вопрос № 95536: Всем удачи в работе! У меня вопрос как считать из файла текс и вывести его на экран. Читал много инфы и на этом сайте тоже, но паровоз все там же. Подскажите где почитать или расскажите как правильно сделать. У меня пока максимум, что удалось...

Вопрос № 95.493
Доброго времени суток!
Продолжу тему STL.
Из ответов на мой предыдущий вопрос № 94826 я для себя выяснил,
что VC6+SP5 иногда некорректно работает с STL. Решил тогда я
создать dll-ку с нужной мне ф-цией в VC2005 или через gcc под Винды.
(см. приложение) и подключить ее к проекту на VC6. Но пока ничего
не получилось. Эта схема не работает даже в VC2005, хотя если делать
все в одном файле - в VC2005 все работает.
Возможно я не учел какие-то тонкости VC2005 но ошибка выскакивает
при попытке освобождения памяти из кучи при удалении элемента списка.
С явной загрузкой библиотеки тоже проверял - тоже не работает.
Спасибо за ответы.

Приложение:

Отправлен: 17.07.2007, 23:41
Вопрос задал: kool (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ilkras
Здравствуйте, kool!
Первое, что приходит на ум - сравните headers использованные в библиотеке с 2005. Если есть отличие в определении типа string, то очевидно объект созданый в приложении будет иметь размер отличный от объекта созданого в библиотеке.
Кроме того непонятна "неявность загрузки". В аппликации должен быть включен header вашей библиотеки и она должна быть добавлена к списку линкуемых библиотек.
Ответ отправил: Ilkras (статус: Студент)
Ответ отправлен: 18.07.2007, 00:08


Вопрос № 95.498
Ув. эксперты(Шинтяков Дмитрий Васильевич), я вызываю рекурсию очень много раз и происходит переполнение стека
Вы сказали что объеи стека можно менять, как это можно сделать?
> Обычно объёма стека хватает, а вообще его можно менять
Отправлен: 18.07.2007, 01:43
Вопрос задала: Mikolis (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Maxim V.G.
Здравствуйте, Mikolis!
Изменить размер (объём) стека на сколько я знаю менять нельзя. Если не хватает памяти для выполнения рекурсии то надо использовать динамическую память. Например на каждой итерации рекурсии выделять памяти для переменной (ных), а по завершении итерации освобождать. Освобождать обязательно, а то вместо переполнения стека получится "переполнения" памяти :).

---------
Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 3-ий класс)
Ответ отправлен: 18.07.2007, 03:27
Оценка за ответ: 2
Комментарий оценки:
спасибо за внимание и за хороший совет!

Отвечает: Богаткин Станислав Евгеньевич
Здравствуйте, Mikolis!
Извините, если для Вас это будет неприемлемо, но я бы очень не советовал Вам использовать рекурсию в Ваших программах. Все дело в том, использование рекурсии с сохранением данных в стеке "отъедает" очень много памяти. Попробуйте использовать сохранение членов/объектов, сохраняемых при рекурсии, например, в динамический массив данных.
Ответ отправил: Богаткин Станислав Евгеньевич (статус: 2-ой класс)
Ответ отправлен: 18.07.2007, 14:57
Оценка за ответ: 2
Комментарий оценки:
спасибо за внимание и за совет, я так и собиралась поступать так как другого выхода пока не нашла!


Вопрос № 95.536
Всем удачи в работе!
У меня вопрос как считать из файла текс и вывести его на экран. Читал много инфы и на этом сайте тоже, но паровоз все там же. Подскажите где почитать или расскажите как правильно сделать.
У меня пока максимум, что удалось сделать это получит из текстового документа первое слово
HELP!!!

Приложение:

Отправлен: 18.07.2007, 11:50
Вопрос задал: Solowey (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Stv
Здравствуйте, Solowey!
Вот код,который читает содержимое файла и выводит прочитанное содержимое на консоль.

Приложение:

Ответ отправила: Stv (статус: 1-ый класс)
Ответ отправлен: 18.07.2007, 12:01

Отвечает: Sema
Здравствуйте, Solowey!

попробуй вот такой вариант
у меня "===" - последняя строка в файле
можно попробовать еще и while (fgets( line, 256, stream )){
if( (stream = fopen( fPathName, "r+" )) != NULL ){
while (fgets( line, 256, stream ) != "==="){
/*...........................*/
}
fclose( stream );
}

Ответ отправил: Sema (статус: 2-ой класс)
Ответ отправлен: 18.07.2007, 16:55

Отвечает: Терсков Сергей
Здравствуйте, Solowey!
Самое странное что вы хотя бы одно слово прочитали из файла. Вот здесь :

ifstream f("Test.txt");
if ( !f.bad() )
{
cout << "ERROR! File no open" << endl;
f.close();
}

при корректном открытие файла условие (!f.bad()) дает true и файл закрывается. Хотя действительно оператором >> вы считаете только одно слово, но до него файл в открытом состоянии не дойдет... Поэтому файл вам нужно считывать либо посимвольно (f.get()) либо построчно (getline()).
И вообще по работе с файлами на С++ литературы много. В любом нормальном самоучителе по С++ должен быть подобный раздел...
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 19.07.2007, 03:05


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.53 beta от 09.07.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное