Загрузка...

Вопрос про cin

Тема в разделе C/C++ создана пользователем Тетраэдр228 23 авг 2019. 316 просмотров

  1. Тетраэдр228
    Тетраэдр228 Автор темы 23 авг 2019 0 2 июл 2019
    Как сделать так, чтобы после cin программа в консоли оставалась на одной строке, а не переходила на другую?
     
  2. de9x
    de9x 24 авг 2019 Frontend developer 141 3 янв 2019
    если несколько переменных хочешь ввести в одну строку, то так: cin >> a >> b... >> n;
    а вот если хочешь, чтобы программа продолжила выполняться с этой же строки, то можно через костыль, например, так:
    Код

    int a;
    cout << "Введите a: ";
    cin >> a;
    system("cls");//от ОС зависит, на винде cls
    cout << "Введите а: " << a;
     
  3. storlokol
    storlokol 24 авг 2019 486 12 сен 2013
    Найс гуглишь капитан... А теперь приведи мне пример с этой функцией для ввода и вывода сразу двух переменных на одной строке.
     
  4. openfragus
    openfragus 24 авг 2019 15 22 фев 2017
  5. adziri
    adziri 25 авг 2019 mental handicap 8 20 дек 2017
    Оно же просто очищает экран..
     
  6. de9x
    de9x 25 авг 2019 Frontend developer 141 3 янв 2019
    какой гугл блять. я сказал то, что первым пришло в голову, сделай - ка мне так, а не пизди.
    вывод же будет таким (который он хотел)? строго по т. з. как говорится.)
    --- Сообщение объединено с предыдущим 25 авг 2019
    Код

    int a, b;
    cout << "Введите a и b: ";
    cin >> a >> b;
    system("cls");
    cout << "Введите а и b: " << a << b;
    --- Сообщение объединено с предыдущим 25 авг 2019
    XD, щас загуглил, реально такое же решение нашёл. радует, что кто-то мыслит, как я или я, как кто-то.. стоп, а нахуя ты гуглил тогда, умник?
    getch(), кстати, тоже как вариант
     
    25 авг 2019 Изменено
  7. adziri
    adziri 25 авг 2019 mental handicap 8 20 дек 2017
    Ну, как сказать, хз..
    В общем если чуть пораскинуть мозгами, то можно че-то такое напилить:
    [IMG]
    Это если в убогой виндовой консольке, без особого использования винапи, доп. либ (в т.ч. ncurses), ну и не для *никсовских систем.
    Кот:
    Код

    #include <cstring>
    #include <stdio.h>
    #include <assert.h>
    #include <windows.h>
    #include <conio.h>


    COORD GetConsoleCursorPosition(HANDLE hConsoleOutput) noexcept {
    assert(hConsoleOutput && "must be non-nullptr");
    CONSOLE_SCREEN_BUFFER_INFO cbsi;
    if (GetConsoleScreenBufferInfo(hConsoleOutput, &cbsi)) {
    return cbsi.dwCursorPosition;
    }
    return COORD{};
    }

    template <typename T = char>
    struct Input {
    T buffer_[32];
    T* iterator_;

    Input() noexcept : buffer_{}, iterator_{nullptr} {
    if (!fgets(buffer_, sizeof buffer_, stdin))
    return;

    iterator_ = buffer_;
    }

    template <typename U>
    void read(U& value) noexcept {
    T result = 0;
    for ( ; *iterator_ && '\n' != *iterator_; iterator_++) {
    if (' ' == *iterator_) {
    iterator_++;
    break;
    }
    result = result * 10 + *iterator_ - '0';
    }
    value = result;
    }

    std::size_t size() noexcept {
    return strlen(buffer_);
    }
    };

    int main() {
    int x = 0;
    int y = 0;
    printf("Enter x and y: ");
    COORD saved_cursor_position =
    GetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE));
    Input<char> in;
    in.read(x);
    in.read(y);

    saved_cursor_position.X += in.size();
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), saved_cursor_position);

    printf(", Sum = %d", x + y);
    }
    --- Сообщение объединено с предыдущим 25 авг 2019
    Код
    #include <cstring>
    #include <stdio.h>
    #include <assert.h>
    #include <windows.h>
    #include <conio.h>
    #include <type_traits>

    COORD GetConsoleCursorPosition(HANDLE hConsoleOutput) noexcept {
    assert(hConsoleOutput && "must be non-nullptr");
    CONSOLE_SCREEN_BUFFER_INFO cbsi;
    if (GetConsoleScreenBufferInfo(hConsoleOutput, &cbsi)) {
    return cbsi.dwCursorPosition;
    }
    return COORD{};
    }

    struct Input {
    typedef char input_type;
    typedef input_type* iterator;

    input_type buffer_[32];
    iterator iterator_;

    Input() noexcept : buffer_{}, iterator_{nullptr} {
    if (!fgets(buffer_, sizeof buffer_, stdin))
    return;

    iterator_ = buffer_;
    }

    template <typename Integer, std::enable_if_t<std::is_integral_v<Integer>, Integer> = 0>
    void read(Integer& value) noexcept {
    Integer result = 0;
    for ( ; *iterator_ && '\n' != *iterator_; iterator_++) {
    if (' ' == *iterator_) {
    iterator_++;
    break;
    }
    result = result * 10 + *iterator_ - '0';
    }
    value = result;
    }

    std::size_t size() noexcept {
    return strlen(buffer_);
    }
    };

    int main() {
    int x = 0;
    int y = 0;
    printf("Enter x and y: ");
    COORD saved_cursor_position =
    GetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE));
    Input in;
    in.read(x);
    in.read(y);

    saved_cursor_position.X += in.size();
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), saved_cursor_position);

    printf(", Sum = %d", x + y);
    }
    --- Сообщение объединено с предыдущим 25 авг 2019
    Ебал рот данного сайта, даже отрекдактировать нормально сообщение нельзя, ну жрите тогда как есть..
    Последние поправки к коду:
    Код

    #include <cstring>
    #include <stdio.h>
    #include <assert.h>
    #include <windows.h>
    #include <conio.h>
    #include <type_traits>

    COORD GetConsoleCursorPosition(HANDLE hConsoleOutput) noexcept {
    assert(hConsoleOutput && "must be non-nullptr");
    CONSOLE_SCREEN_BUFFER_INFO cbsi;
    if (GetConsoleScreenBufferInfo(hConsoleOutput, &cbsi)) {
    return cbsi.dwCursorPosition;
    }
    return COORD{};
    }

    struct Input {
    typedef char input_type;
    typedef input_type* iterator;

    input_type buffer_[32];
    iterator iterator_;

    Input() noexcept : buffer_{}, iterator_{nullptr} {
    if (!fgets(buffer_, sizeof buffer_, stdin))
    return;

    iterator_ = buffer_;
    }

    template <typename Integer, std::enable_if_t<std::is_integral_v<Integer>, Integer> = 0>
    void read(Integer& value) noexcept {
    Integer result = 0;
    for ( ; *iterator_ && '\n' != *iterator_; iterator_++) {
    if (' ' == *iterator_) {
    iterator_++;
    break;
    }
    result = result * 10 + *iterator_ - '0';
    }
    value = result;
    }

    std::size_t size() noexcept {
    return strlen(buffer_);
    }
    };

    int main() {
    int x = 0;
    int y = 0;
    printf("Enter x and y: ");
    COORD saved_cursor_position =
    GetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE));
    Input in;
    in.read(x);
    in.read(y);

    saved_cursor_position.X += in.size();
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), saved_cursor_position);

    printf(", Sum = %d", x + y);
    }
    --- Сообщение объединено с предыдущим 25 авг 2019
    Даже, блядь, отступы перекосило, да еб..
     
  8. de9x
    de9x 26 авг 2019 Frontend developer 141 3 янв 2019
    ты реально балбес. getch можно юзать и не ебать мозги.
     
  9. adziri
    adziri 26 авг 2019 mental handicap 8 20 дек 2017
    de9x, не хочу хвастаться, но я это где-то минут за 15 накидал, учитывая что ещё гуглил немног доку по винапи ф-ях, ато уже подзабыл много)
     
  10. de9x
    de9x 27 авг 2019 Frontend developer 141 3 янв 2019
    не хочу хвастаться, но мне похуй. просто ты зря тратишь время на такую хуйню
     
Загрузка...
Top