Главная страница
    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.031 c
1-79768
CAHbI4
2004-02-11 21:41
2004.02.25
Содержимое DLL формы на форме вызывающего приложения


3-79570
Alex-kosmonavt
2004-01-29 14:51
2004.02.25
@@IDENTITY


1-79933
ИМХО
2004-02-09 05:01
2004.02.25
Многострочное выделение в гриде


14-80165
Krots
2004-02-01 12:43
2004.02.25
Вопрос по поводу Worda?


4-80364
Rimd
2003-12-20 16:46
2004.02.25
StringGrid и API





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский