Кресты / Говнокод #11604 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
#include <iostream>
#include <string>

int main(void)
{
        char arr[] = "All's well that ends well";
        std::string s(arr, 3000);
        std::cout << s << std::endl;
return(0);
}

Первое что пришло на ум, когда смотрел конструкторы string.
Собирал: g++-4.5 -Wall -Wextra -pedantic-errors
ideone.com и liveworkspace.org фильтруют.

Запостил: sayidandrtfm sayidandrtfm, (Updated )

Комментарии (38) RSS

  • Ну std::string вполне может хранить нолики, что не так? Она с NULL terminated строками работает только в конструкторе да в c_str().
    Ответить
            • Ну примерно такой же мусор и вывален. Разве что вместо x86_64 там написано i686.

              Начинается с "All's well that ends well", затем следует нолик, и затем мусор до 3000байт и 0x0A, который в endl.

              Ничего некорректного не вижу.
              Ответить
                • > В итого: конструктор не проверяющий соответствие длины массива на 'не более чем'.
                  Ну у него сигнатура как бы string(const char * s, size_t n), потому и нет никакой возможности проверить.

                  ЕМНИП шаблонные конструкторы запилить нельзя, поэтому подобную проверку никак не реализовать.
                  Ответить
                      • да всё равно он бессмысленнен
                        большинство строковых констант и так заканчиваются нулем, а те, что не заканчиваются - пользователю самому виднее, сколько конкретно взять из массива (как было виднее ОП)
                        Ответить
                        • Ну вообще да. И от неконстант (типа new char[100500]) все равно не спасет. Остается полагаться на благоразумие пользователя.
                          Ответить
                • Анекдот в тему:

                  На наш завод привезли японский деревообрабатывающий станок. Приходит рабочий, берёт брусок вставляет его в станок, вжик, из станка выходит готовое изделие.
                  -Нихрена себе (сказал рабочий)
                  -А хули ты думал (сказал станок)
                  Берёт бревнышко потолще, вжиик, опять выходит изделие.
                  - Ну нихрена себе (сказал рабочий)
                  -А хули ты думал (сказал станок)
                  Берёт рельсу, крык....
                  -Ну нихрена себе (сказал станок)
                  -А хули ты думал (сказал рабочий)
                  Ответить
                  • А там продолжение к этому анекдоту есть? Где начальство на ковре вставляет рабочему бревнышко, и оный произносит первую фразу, а начальство вторую.
                    Ответить
                • В любом случае, то, что выводится можно узнать через envp.
                  Ответить
          • >Можно взглянуть на ваш выхлоп?
            Можно, только нужно заставить борманда сдать анализы.
            Ответить
            • На пастбине круглосуточно.
              На голодный желудок и майонезную баночку не возвращают.
              Ответить
  • char arr[] = "All's well that ends well";
    std::string s(arr, 25);
    std::cout << s << std::endl;
    Ответить
  • Первое что пришло на ум

    Вам дают заряженный пистолет. У вас есть нога. Что же вам первое придет на ум?
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8