Загрузка...

Question about cin

Thread in C/C++ created by Тетраэдр228 Aug 23, 2019. 315 views

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

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

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

    #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);
    }
    The post was merged to previous Aug 25, 2019
    Code
    #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);
    }
    The post was merged to previous Aug 25, 2019
    Ебал рот данного сайта, даже отрекдактировать нормально сообщение нельзя, ну жрите тогда как есть..
    Последние поправки к коду:
    Code

    #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);
    }
    The post was merged to previous Aug 25, 2019
    Даже, блядь, отступы перекосило, да еб..
     
  8. de9x
    de9x Aug 26, 2019 Frontend developer 141 Jan 3, 2019
    ты реально балбес. getch можно юзать и не ебать мозги.
     
  9. adziri
    adziri Aug 26, 2019 mental handicap 8 Dec 20, 2017
    de9x, не хочу хвастаться, но я это где-то минут за 15 накидал, учитывая что ещё гуглил немног доку по винапи ф-ях, ато уже подзабыл много)
     
  10. de9x
    de9x Aug 27, 2019 Frontend developer 141 Jan 3, 2019
    не хочу хвастаться, но мне похуй. просто ты зря тратишь время на такую хуйню
     
Loading...
Top