Re[8]: удобное и функциональное использование строки в C++
От: Alex Alexandrov США  
Дата: 08.10.07 12:29
Оценка: +1
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Alex Alexandrov, Вы писали:


AA>>"Любое взятие адреса элемента" — не совсем корректно. Скорее, "любое получение неконстантной ссылки или указателя". Вот, собственно, код из libstdc++ (интересные месты выделены полужирным):


E>Ну и хорошего-то что?

E>Как будто ты можешь свободно управлять константностью своих переменных...

Ну, это не было примером чего-то хорошего. Я было лишь иллюстрацией того, что использование std::string как contiguous block безопасно даже в случае ref-count реализации.

E>Хотя, использую прокси, можно таки сделать так, что при модификациях только будет копирование, но таки это всё неоправданное переусложнение, а с другой при взятии указателя всё равно никуда не денешься

E>ИМХО всё

Насколько я знаю, Стандарт запрещает возвращать прокси. Точное место и обоснование времени нет искать, но где-то я читал про это.

E>Да, а что касается "стандартности", то CString не менее стандартен в целом. А если его немного порихтовать, чтобы сделать независимым, то можно его ещё и абсолютно переносимым сделать

Как обычно, все определяется требованиями. Если я пишу 50-строчный прототип какого-нибудь алгоритма или пример, то я буду использовать std::string. Если это большой проект, разные части которого могут быть скомпилированы разными компиляторами или я хочу (а я часто хочу), чтобы можно было дебажный билд какой-нибудь библиотеки накатить поверх релизной версии продукта, то я скажу строгое "нет" любым объектам STL по крайней мере во внешних интерфейсах. С легкостью могу представить ситуацию, когда использование std::string недопустимо даже в реализации. Так же легко могу себе представить, что у команды есть свой string, который им удобнее и лучше. Как обычно, все определяется требованиями. И возможностями.
It's kind of fun to do the impossible (Walt Disney)
Re[9]: удобное и функциональное использование строки в C++
От: Roman Odaisky Украина  
Дата: 08.10.07 14:29
Оценка:
Здравствуйте, Erop, Вы писали:

А>>typedef map<int, string, less<int> > INT2STRING;

E>А что за броблема будет, если заменить тут std::string на CString?
E>От элемента std::map вроде бы ничего не требует, кроме семантики значения, а она у CString как раз есть...

Вроде проблем не будет. Вот std::set<CString> — едва ли хорошая мысль.
До последнего не верил в пирамиду Лебедева.
Re[10]: удобное и функциональное использование строки в C++
От: Erop Россия  
Дата: 08.10.07 15:48
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Вроде проблем не будет. Вот std::set<CString> — едва ли хорошая мысль.

А что за беда? Ну определи std::less для CString...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: удобное и функциональное использование строки в C++
От: Аноним  
Дата: 09.10.07 04:19
Оценка:
Здравствуйте, Ужасть бухгалтера, Вы писали:

УБ>Ну, я могу. MultiByteToWideChar, например.


Бывает и такое. А вы ей на самом деле пользуетесь, или чем попроще, макросами типа W2A например?
Re[11]: удобное и функциональное использование строки в C++
От: Аноним  
Дата: 09.10.07 04:43
Оценка:
Здравствуйте, Erop, Вы писали:

RO>>Вроде проблем не будет. Вот std::set<CString> — едва ли хорошая мысль.

E>А что за беда? Ну определи std::less для CString...

Это уже оверхед, о чем речь и шла.
Re[8]: удобное и функциональное использование строки в C++
От: Аноним  
Дата: 09.10.07 09:07
Оценка:
Здравствуйте, Erop, Вы писали:

E>И этотаналог написан через GetBuffer/ReleaseBuffer...

E>Тема-то была о том, что CString с таким API использовать удобнее, чем std::string...

Если проект поддерживает mfc, то с API действительно да. Но в мфц есть свой контейнер для CString. Речь шла типа о том, что вообще лучше — танк или подводная лодка
Re[5]: удобное и функциональное использование строки в C++
От: Left2 Украина  
Дата: 09.10.07 09:15
Оценка:
AA>Вообще, я лично не знаю ни одной реализации STL, где std::basic_string не хранит элементы как contiguous block.
AA>В будущем это вроде бы вообще собираются в Стандарт добавить.
Точно собираются добавить? С вектором не путаешь?
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[6]: удобное и функциональное использование строки в C++
От: Alex Alexandrov США  
Дата: 09.10.07 09:21
Оценка: 2 (1) +1
Здравствуйте, Left2, Вы писали:

AA>>Вообще, я лично не знаю ни одной реализации STL, где std::basic_string не хранит элементы как contiguous block.

AA>>В будущем это вроде бы вообще собираются в Стандарт добавить.
L>Точно собираются добавить? С вектором не путаешь?

Не путаю. http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#530
It's kind of fun to do the impossible (Walt Disney)
Re[9]: удобное и функциональное использование строки в C++
От: Erop Россия  
Дата: 09.10.07 09:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Бывает и такое. А вы ей на самом деле пользуетесь, или чем попроще, макросами типа W2A например?

Я, например, пользуюсь. Макросы подобные избегаю обычно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[12]: удобное и функциональное использование строки в C++
От: Erop Россия  
Дата: 09.10.07 09:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Это уже оверхед, о чем речь и шла.


В смысле "оверхед"? Это же просто, делается один раз, и потом никаких проблем...
ИМХО надо при выборе смотреть на сами строчки, на то, наскольок удобно их использовать в твоих задачах, а не на то надо ли где-то написать одну функцию в одну строку размером...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[10]: удобное и функциональное использование строки в C++
От: Аноним  
Дата: 09.10.07 10:05
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Аноним, Вы писали:


А>>Бывает и такое. А вы ей на самом деле пользуетесь, или чем попроще, макросами типа W2A например?

E>Я, например, пользуюсь. Макросы подобные избегаю обычно...

Макро короче чем такая функция, с ними писать меньше надо. Мне писать длиннее обычно лениво, если можно короче написать. Люблю осциллировать!
Re[9]: удобное и функциональное использование строки в C++
От: Left2 Украина  
Дата: 09.10.07 11:13
Оценка:
УБ>>Ну, я могу. MultiByteToWideChar, например.
А>Бывает и такое. А вы ей на самом деле пользуетесь, или чем попроще, макросами типа W2A например?

Макросы вида W2A это прошлый век. Сейчас рулят классы вида CW2A, CT2A и т.п.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[11]: удобное и функциональное использование строки в C++
От: Left2 Украина  
Дата: 09.10.07 11:17
Оценка:
RO>>Вроде проблем не будет. Вот std::set<CString> — едва ли хорошая мысль.
E>А что за беда? Ну определи std::less для CString...

А зачем? Для CString operator< определён и работает как надо...
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[10]: удобное и функциональное использование строки в C++
От: Left2 Украина  
Дата: 09.10.07 11:17
Оценка:
RO>Вроде проблем не будет. Вот std::set<CString> — едва ли хорошая мысль.
А в чём проблема std::set<CString>?
... << RSDN@Home 1.2.0 alpha rev. 717>>
Re[11]: удобное и функциональное использование строки в C++
От: Erop Россия  
Дата: 09.10.07 11:52
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Макро короче чем такая функция, с ними писать меньше надо. Мне писать длиннее обычно лениво, если можно короче написать. Люблю осциллировать!


Ты эта, прости, но я обычно пишу так:
В одном месте в программе пишу:
CString ConvertToCodePage( const wchar_t* text, UINT CodePage, DWORD flags = 0 );
а потом вызываю эту функцию...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.