Форум: "Потрепаться";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизВопрос об 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.031 c