Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > конкатенация boost::mpl::string |
Автор: boostcoder 2.11.2010, 15:05 | ||||
следующий код:
http://liveworkspace.org/code/41511b3d5ba914ba40b08445a753b5f5 работает как надо. но если его изменить так:
http://liveworkspace.org/code/16fa2f9bde5780b6f8d29931dfef7cb6 то получаю кучу ошибок. вопрос в том, как можно конкатенировать массив mpl строк? спасибо. |
Автор: mes 2.11.2010, 16:14 |
потому что пытаетесь сделать push_back<string, string>, а string в отличие от char_ явлется seq, a не value.. a push_back напрямую последовательности не складывает.. Добавлено через 1 минуту и 40 секунд это я так понимаю Вы к строке формата перешли ? |
Автор: rudvil 2.11.2010, 16:31 |
Разве в одинарных кавычках можно писать более одного символа? помоему нет. |
Автор: boostcoder 2.11.2010, 16:48 | ||||||
это я понял из ошибок. но подумал, что строки имеют права склеиваться. и предположил что mpl строки тоже. значит не могут.. вопрос закрыт.. Добавлено через 55 секунд ага. что-то мне очень хочется реализовать это препроцессором. результат тот же, а времязатраты меньше. Добавлено через 2 минуты и 19 секунд
угу. можно записать и так:
но в действительности будет использован только последний символ. Добавлено через 3 минуты и 48 секунд т.е. нет, не закрыт. какие способы решения есть? |
Автор: mes 2.11.2010, 17:00 | ||
использовать вместо push_back другой алгоритм ![]() ![]() по идеи copy должен помочь.. Добавлено через 56 секунд
а все остальное уже работает ? что Вы к завершающим штрихам перешли ? |
Автор: boostcoder 2.11.2010, 17:02 |
попробую.. |
Автор: boostcoder 2.11.2010, 18:28 | ||
вы снова правы ![]()
http://liveworkspace.org/code/0055a2e48b523039eb5b3d939bc47f87 вопрос закрыт. |
Автор: mes 2.11.2010, 18:38 | ||
это опять "случайность", связанная с разрядностью.. будет использован остатка от деления на (чар_мах+1), который равен последнему символу.. ![]() Добавлено @ 18:38 уряя ![]() |
Автор: boostcoder 2.11.2010, 18:39 | ||
о как! зы вам череп не жмёт? ![]() |
Автор: mes 2.11.2010, 18:42 |
хотелось бы подчеркнуть.. что самой операции, взятие остатка деления, как таковой, тоже не будет.. это просто следствие переполнения.. Добавлено @ 18:45 зря Вы так.. я всего лишь новичок.. и знаний не так много.. к бусту фактически впервые прикоснулся только в этом месяце.. а так меня просто спасает интуиция ![]() |
Автор: boostcoder 2.11.2010, 18:53 | ||
![]() значит я зародыш ![]() |
Автор: mes 2.11.2010, 20:15 |
http://liveworkspace.org/code/8940c23611e76d3345b357b59f732f39 "использован последний символ" - 2я строка вывода "остаток от деления " - 3я строка вывода "результат переполнения при приведении" - 4я строка вывода (<- имелось ввиду это) "наложение маски по and" - 5я строка вывода ![]() все приведенные строчки дают одинаковый результат, но это все частный случай из за особенностей архитектуры (т.е. так называемое "случайно").. |
Автор: boostcoder 2.11.2010, 21:37 | ||
забавно ![]() |