1. C++ / Говнокод #13223

    +14

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    int error = (unsigned)-1;
    
    int x, y, w, h;
    x = y = w = h = error;
    
    stream >> x >> y >> w >> h;
    
    if(x == error || y == error || w == error || h == error)
       ...

    Не нашёл, как по-другому обрабатывать ошибки текстовых командах.

    Запостил: an0nym, 24 Июня 2013

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

    • Использовать stream.good() религия не позволяет?
      Ответить
      • Да, работает. У меня этот метод с файлами ассоциировался, а тут stringstream.
        Хотя возвращает false, если после последнего значения нет пробела.
        Ответить
        • на тебе
          http://ideone.com/HXpvbC

          у тебя false возвращает только лишь потому, что там eof
          Ответить
    • из любого потока - только 4 байта!
      мне интересно, как будет выглядеть алфавит x, y, w, h; если вам надо будет считать 128 байт? 256? 65536? ну а 4Гб?
      Ответить
      • Судя по названию переменных, тут параметры прямоугольника считываются. Так что отсутствие циклов вполне нормально. :)
        Ответить
        • цикл, вероятно, обрамляет весь приведенный код. Ненормально - проверка на ошибку, а чтение - вполне ок.
          Ответить
        • Это парсер консольных команд игрового движка.
          Ответить
        • Нельзя себя ограничивать двухмерным пространством. А вдруг программу придётся расширять на бесконечномерное пространство, что тогда делать?
          Ответить

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