Как вводить переменные с помощью cin без создания новой строки?
Всякий раз, когда я ввожу переменную с помощью cin
, после ввода одного из них она автоматически переходит к новой строке. Мне любопытно, есть ли способ использовать cin
, не переходя в новую строку. Я хочу, чтобы cin
и cout
несколько элементов в одной строке в командной строке. Возможно ли это?
Ответы
Ответ 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 соответственно.