Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.028 c
3-79653
OlegM
2004-01-30 22:25
2004.02.25
Вычислить максимально значение поля ?


14-80104
Думкин
2004-02-03 06:07
2004.02.25
С днем рождения! 3 февраля.


14-80199
Zoloto
2004-02-06 13:52
2004.02.25
Русификация программы


1-79739
Oleg_
2004-02-11 16:45
2004.02.25
Ошибка открытия файла через TFileStream


14-80123
JOJIN
2004-01-31 02:08
2004.02.25
OFF На заказ кто нибудь работает?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский