Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: fstream в MSVS6 и STL  (Прочитано 8910 раз)
0 Пользователей и 1 Гость смотрят эту тему.
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« : 04-12-2004 13:17 » 

Хочу использовать класс fstream. Пишу ему:
Код:
#include "stdafx.h"
#include <fstream.h>
void func()
{
    fstream S;
}
И получаю ровно 103 таких примерно ошибки:
Цитата: MSVS 6
c:\program files\microsoft visual studio\vc98\include\ios.h(146) : error C2872: 'streambuf' : ambiguous symbol
Ну там дальше ошибки с ios, ostream, istream и т.д.
В файле stdafx.h у меня подцеплено namespace std.
В STL есть файл fstream. Но я хочу использовать fstream.h .
Как я понял, проблема в том, что одинаковые классы определены и в STL, и в fstream.
Вопрос: как мне избавиться от этой ошибки??
Спасибо всем заранее.
« Последнее редактирование: 03-12-2007 16:13 от Алексей1153++ » Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Pu
Большой босс

ru
Offline Offline
78


« Ответ #1 : 04-12-2004 14:40 » 

baldr, я пишу обычно так :

Код:
#include <fstream> 
void func()
{
    std::fstream S;
}
если хочешь использовать не std::fstream. то убери общий юзинг std. а ставь только там где ты его используешь.
« Последнее редактирование: 03-12-2007 16:14 от Алексей1153++ » Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 06-12-2004 12:17 » 

baldr, fstream.h -- это до-STL -ный вариант потоков, оставлен для совместимости со старыми программами.  Если ты пользуешься STL (а об этом говорит using namespace std), то надо включать заголовок <fstream> (БЕЗ .h на конце)
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 06-12-2004 12:26 » 

npak, я просто не понимал разницы между ними и решил использовать тот, который мне привычнее.
Сейчас я уже разобрался, все нормально.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #4 : 12-12-2004 02:43 » 

baldr, если тебе очень падо юзать именно #include <fstream.h>, то делай так

Код:
#include "stdafx.h" 
#include <fstream.h>
void func()
{
    ::fstream S;
}
« Последнее редактирование: 03-12-2007 16:15 от Алексей1153++ » Записан

С уважением Lapulya
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #5 : 12-12-2004 07:18 » 

lapulya, так не канает - я это уже пробовал.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #6 : 12-12-2004 21:52 » 

baldr, вот это у меня работает как часы

Код:
#include <fstream.h> 
void func()
{
    ::fstream S;
}

равно как и это

Код:
#include <fstream.h> 
void func()
{
    fstream S;
}
« Последнее редактирование: 03-12-2007 16:16 от Алексей1153++ » Записан

С уважением Lapulya
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines