Re[4]: Нужен совет
От: AlexTAI alextai.narod.ru
Дата: 19.08.02 10:56
Оценка:
Здравствуйте Кодт, Вы писали:

К>Здравствуйте AlexTAI, Вы писали:


ATAI>>есть 2 основных требования:

ATAI>>1. все работает с юникодом.
ATAI>>2. при перераспределении памяти желательно чтобы перераспределение происходило с "запасом на будующее".

К>Уже есть std::wstring — для юникода

К>
К>namespace std {
К>typedef basic_string<wchar_t> wstring;
К>}
К>


К>Если операций склейки много, а результат многокилобайтный, то можно еще использовать список строк

К>
К>using namespace std;

К>class wstrlist
К>{
К>protected:
К>  typedef list<std::wstring> list_t;

К>  list_t m_list;

К>public:
К>  void operator +=(const std::wstring& s)
К>  {
К>    if(s.empty()) return;
К>    if(!m_list.empty() && m_list.back().size() + s.size() < 1024)
К>      m_list.back() += s; // добавление к имеющейся строке более осмысленно
К>    else
К>      m_list.push_back(s); // добавим новую строку
К>  }

К>  void export(owstream& os) const
К>  {
К>    list_t::const_iterator it = m_list.begin(), itEnd = m_list.end();
К>    while(it != itEnd) os << *it;
К>  }

К>  operator wstring() const
К>  {
К>    owstrstream os;
К>    export(os);
К>    return os.str();
К>  }

К>  friend owstream& operator << (owstream& os, const wstrlist& sl)
К>  {
К>    sl.export(os);
К>    return os;
К>  }
К>};

К>






Большое спасибо.
Тогда еще один маленький вопрос — как перекопировать полученный список в wchar_t * Буффер поэффективнее.
Тумаров Александр ( AlexTAI )
alextai3@yahoo.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.