Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Вопрос об STL в C++Builder 6 и Visual C++ 6   Найти похожие ветки 

 
VEG ©   (2004-02-04 00:12) [0]

Обнаружился факт, что STL в C++Builder дополнена специальными функциями, которых, вроде, нет в Visual C++.
Например, в C++Builder без проблем компилируется и работает:

fstream fCfg;
fCfg.open(sFileName.data(), ios::in);
if(!fCfg.is_open()) return false;
string sRead;
fCfg >> sRead; // Тут Visual C++ кричит, что операция >> для правого операнда типа sting не определена

Определяем эту операцию:

inline void read_to_delim(istream& strm, char delim, string& s)
{
char ch;
int nchars = 0;
char array[4096];
int capacity = sizeof array;
while ( true )
{
strm.get( array+nchars, capacity-nchars+1, delim );
nchars += strlen( array+nchars );
if ( !strm.good() ) break;
strm.get(ch);
if (ch==delim) break;
else strm.putback(ch);
}
s = array;
}
inline istream& operator >> (istream& is, string& arg)
{
read_to_delim(is, "\n", arg);
return is;
}
inline ostream& operator << (ostream& os, const string& arg)
{
return os << arg.c_str();
}

Все начинает работать. Неужели в Visual C++ нет такого? Ладно, идем далее. В C++Builder определены операции string для char, а в Visual C++ нет. Разве все это тоже нужно самому описывать?
Быть может, есть какой-то инклюд, добавляющий эти функции?


 
Sergey_Masloff   (2004-02-04 00:16) [1]

Ну реализаций STL есть много разных... это не секрет. S они только в том смысле что то что описано в стандарте они реализуют.


 
VEG ©   (2004-02-04 00:31) [2]

Так получается, что в версии Visual C++ нет таких простых функций совместимости? Неужели так все плохо, и все писать самому надо?


 
Sergey_Masloff   (2004-02-04 00:52) [3]

Что мешает с VC использовать одну из сотен реализаций доступных в сети?
Вот бесплатная STL от SGI
http://www.sgi.com/Technology/STL/
вот STL от К.Хорстмана ("безопасная")
http://www.horstmann.com/safestl.html

еще можно поискать на boost.org


 
Rauf ©   (2004-02-04 04:20) [4]

На нельзя было на Visual С++ попробовать такую строчку?

fCfg >> (char*)sRead.c_str();


 
Ломброзо ©   (2004-02-04 10:19) [5]

вег, читайте талмуд. STL - это всего лишь стандарт, а не реализация. Поддержка операторов << >>, например, в STLPort включается на стадии компиляции путём раскомментирования какого-то дефайна в stl_user_config.h

www.stlport.org


 
VEG ©   (2004-02-04 16:31) [6]

Спасибо. Сейчас скачаю и погляжу все, что найду.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
3-79680
Miwa
2004-01-29 03:53
2004.02.25
С varchar-ом не могу подружиться...


1-79979
Dimich1978
2004-02-13 15:55
2004.02.25
Office & Excel


4-80368
emergenter
2003-12-16 21:32
2004.02.25
API: LocalAlloc


14-80238
Batoon
2004-02-03 16:57
2004.02.25
Ряды Фурье


14-80297
Alone
2004-02-03 11:26
2004.02.25
Глюки Windows не являются ошибками