|
В былые времена лабораторных работ часто требовался вывод на консоль русских букв, ибо транслит и ломаный английский очень смущал преподов. Приходилось изворачиваться либо вставляя к месту и не к месту CharToOem либо (находились и такие) заменяя строки в тексте программы строками с использованием кодовой страницы 866. Но! Истина была как всегда рядом. Жаль я не додумался использовать Unicode раньше :)
Выводит на эран именно: Привет всем! а не: ¦ЁштхЄ тёхь! :) PS. Если найдутся люди, кому это интересно, могу продолжить. За время работы скопилась масса различных "ах если б молодость знала" PPS. Буду рад, если кто еще захочет поделиться опытом! |
ShadowS | |
|
Да чего уж там выкладывай свои "ноу-хау", может и тебе кто нибудь чего полезного скинет
|
|
Я разочарован в функторах, и функциональных адаптерах. Как думаете, что делает это код?
При условии, что:
Всего лишь вычисляет сумму Size всех элементов контейнера. Причем стандартными средствами STL это сделать нельзя. Использован функтор, расширяющий возможности стандартной библиотеки compose_f_gx_hy . Его описание можно найти в книге Николая Джосаттиса "The C++ Standard Library" . Это сообщение отредактировал GregZ - 21-04-2006 - 23:36 |
|
Извиняйте народ. Продолжения не будет. http://www.sxn.today/index.php?showtopic=96226 |
|
Вот интересный вопрос, его задают на тестировании у нас в конторе: (вопрос с подвохом) Для каких вариантов наследования стандарт разрешает преобразование указателя базового класса на указатель производного при помощи static_cast?
1 public 2 protected 3 private 4 virtual public 5 virtual protected 6 virtual private Кто первый ответит правильно и объяснит ответ, не пожалею 20 сексо. Больше просто нет :). Ну и конечно репутацию! |
|
Судя по всему придётся отвечать самому. :)) Неужели ни кто не знает ответа? |
|
А народу тяжело... :) Стандарт открывать или компилятор запускать - нечестно, а так не помнят... Это я про себя. :) |
|
Вопрос не даром с подвохом. Большинство современных компиляторов не дадут полностью правильного ответа на этот вопрос. В частности ошибутся VS8.0 и даже хваленый Comeau. Вот стандарт - другое дело. Но я совсем не против этого! Даже - за. Лишь бы правильно. |
|
Жаль ответа я так и не дождался. Вопрос вроде как был не очень сложный. Итак ответ: 4 virtual public 5 virtual protected 6 virtual private Эти варианты отметаются сразу. Реализация виртуального наследования в языке С++ не позволяет во время компиляции получить указатель производного класса из базового. Другое дело - во время выполнения, но для этого нужно использовать dynamic_cast. 1 public Ответ вполне однозначен. Преобразование возможно. 2 protected 3 private Самые сложные варианты. Как известно при закрытом и защищенном наследовании невозможно преобразовать даже указатель производного класса к указателю на базовый класс. Следовательно обратное преобразование (суть вопроса) вдвойне не имеет смысла, хотя практически (для компилятора) возможно. НО! Первое ограничение легко обойти. Достаточно открытой функции-члена в производном классе, возвращающей указатель на базовый класс. Что же тогда произойдет попытке обратного преобразования!? Компиляторы 8 студии и Comeau со спокойной душой допустят его. И... будут не правы. Лишь gcc корректно сообщит об ошибке преобразования. Дело в том, что стандарт явно запрещает преобразования от базового класса с производному, если невозможно преобразования от производного к базовому. :) Вот такое разночтение стандарта. ЗЫ. ISO/IEC 14882-2003 (Пункт 5.2.9 стих 5)
|
|
Да, не умею я конкурсы проводить :) вот в железном отделе отличный конкурс. По его канонам мне надо было задавать такие вопросы: 1. Перечислить производителей компиляторов (только С++). Не менее 3. :) 2. Перечислить ключевые слова языка программирования С++. Не менее 5. :) 3. На бумаге какого цвета напечатан стандарт 2003 адаптированный INCITS? :) |
|
А че такие сложные вопросы? :) Папроще! |
|
Только чур не гуглить! :)
|
tetro | |
|
По поводу производителей компиляторов, кого мы считаем: у кого полностью свой, чей C++ frontend или чей backend?
|
|
Без разницы. Лишь бы современные. :) |
Chara | |||
|
Я его распечатала на розовой... Причем буквами magenta. Симпатишненько получилось |
tetro | |
|
Практически все производители специфических процессоров сразу лезут вперед: и HP и Sun и SGI (светлая ему память) не говоря о IBM ...
|
|
Столкнулся с интересной особенность в языке С++. При перегрузке функции foo:
компилятор не может выбрать наиболее подходящую функцию. Для него они: indistinguishable conversion sequences. Т.е.:
В стандарте [C++03] п. 13.3.3.2 стих 3: Standard conversion sequence S1 is a better conversion sequence than standard conversion sequence S2 if: ... - S1 and S2 are reference bindings (8.5.3), and the types to which the references refer are the same type except for top-level cv-qualifiers, and the type to which the reference initialized by S2 refers is more cv-qualified than the type to which the reference initialized by S1 refers. ... |
Roman | |||
|
Не работает... |
|
Не компилируется, или работает некорректно? Если второе, что конкретно не так? |
Roman | |||||
|
Не то выводит: "¦ЁштхЄ тёхь!". |
|
Быть такого не может. Компилятор какой? Локаль? |
Roman | |||||
|
Borland Developer Studio 2006, винда ХР с СП2. |
|
А локаль какая у компилятора? Вывод осуществляете в консоль? |
Roman | |||
|
Да. |
|
Еще раз спрашиваю, какая локаль у компилятора? Как компилятор должен интерпретировать последовательность байтов L"Привет всем!", чтобы перевести их в юникод? Замени wcout на cout и убери юникод. Что получится? |