Подтвердить что ты не робот

Как вводить переменные с помощью cin без создания новой строки?

Всякий раз, когда я ввожу переменную с помощью cin, после ввода одного из них она автоматически переходит к новой строке. Мне любопытно, есть ли способ использовать cin, не переходя в новую строку. Я хочу, чтобы cin и cout несколько элементов в одной строке в командной строке. Возможно ли это?

4b9b3361

Ответ 1

Вы не можете использовать cin или любой другой стандартный ввод для этого. Но это, безусловно, возможно получить эффект, который вы собираетесь делать. Я вижу, что вы работаете в Windows с помощью Visual Studio, поэтому вы можете использовать, например, _getch. Вот пример, который читается до следующего пробела и сохраняет результат в строке.

#include <conio.h> // for _getch

std::string get_word()
{
    std::string word;
    char c = _getch();
    while (!std::isspace(c))
    {
        word.push_back(c);
        std::cout << c;
        c = _getch();
    }
    std::cout << c;
    return word;
}

Это не очень хорошо. Например, он не обрабатывает непечатанные символы ввода очень хорошо. Но это должно дать вам представление о том, что вам нужно делать. Вы также можете быть заинтересованы в функциях клавиатуры Windows API.

Если вам нужна более широкая аудитория, вы захотите изучить некоторые межплатформенные библиотеки, такие как SFML или SDL.

Ответ 2

вы также можете использовать пространство для ввода вместо ввода что-то вроде этого:

cin >> a >> b >> c;

а на входе введите

10 20 30

затем

a=10
b=20
c=30 

Ответ 3

Как отмечали другие, вы не можете сделать это с помощью cin, но вы можете сделать это с помощью getchar(). Что вам нужно сделать:

  • собирайте каждый символ индивидуально, используя getchar() (добавляя каждый в конец string, как он читается, например), затем
  • после прочтения каждого символа, решите, когда вы достигли конца одного значения переменной (например, путем обнаружения одного или нескольких символов ' ' на входе, если вы читаете значения int или double)), то
  • если вы достигли конца текста для переменной, преобразуйте строку символов, которую вы создали, в переменную соответствующего типа (например, int, double и т.д.), затем
  • выводить любое содержимое на строку, которая может потребоваться, а затем
  • продолжить следующую переменную, которую вы читаете.

Обработка ошибок будет сложной, поэтому я не написал для этого никакого кода, но вы можете увидеть подход, который вы могли бы использовать.

Ответ 4

Я не думаю, что то, что вы хотите сделать, может быть достигнуто с помощью cin. Что вы можете сделать, так это написать все свои данные в одной строке с помощью разделителя по вашему выбору и проанализировать входную строку.

Ответ 5

Это невозможно. Чтобы процитировать @Bo Persson, это не что-то, что контролируется С++, а скорее консольное окно.

Ответ 6

просто используйте оператор gotoxy. вы можете нажать 'enter' и ввести значения в одной строке например. на входе матрицы 3 * 3:

'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'

Ответ 7

Я не могу прокомментировать, но если вы оставите пробелы между целыми числами, вы можете получить желаемый эффект. Это также работает с cin.

int a, b, c;
cin>>a; cin>>b; cin>>c;

Если вы введете свои значения как 10 20 30, тогда они будут сохранены в a, b и c соответственно.