How do I input variables using cin without creatin

2019-01-04 15:00发布

Whenever I input a variable using cin, after one hits enter it automatically goes to a new line. I'm curious if there's a way to use cin without having it go to a new line. I'm wanting to cin and cout multiple things on the same line in the command prompt. Is this possible?

7条回答
爷、活的狠高调
2楼-- · 2019-01-04 15:25

You can't use cin or any other standard input for this. But it is certainly possible to get the effect you are going for. I see you're on Windows using Visual Studio, so you can use, for example, _getch. Here's an example that reads until the next whitespace and stores the result in a string.

#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;
}

It's not very good. For example, it doesn't handle non printing character input very well. But it should give you an idea of what you need to do. You might also be interested in the Windows API keyboard functions.

If you want a wider audience, you will want to look into some cross-platform libraries, like SFML or SDL.

查看更多
迷人小祖宗
3楼-- · 2019-01-04 15:33

It is not possible. To quote @Bo Persson, it's not something controlled by C++, but rather the console window.

查看更多
姐就是有狂的资本
4楼-- · 2019-01-04 15:34

I can't comment but if you leave spaces between integers then you can get the desired effect. This works with cin too.

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

If you enter your values as 10 20 30 then they will get stored in a, b, and c respectively.

查看更多
孤傲高冷的网名
5楼-- · 2019-01-04 15:36

you can also use space for input instead of enter something like this:

cin >> a >> b >> c;

and in input you type

10 20 30

then

a=10
b=20
c=30 
查看更多
叛逆
6楼-- · 2019-01-04 15:36

just use the gotoxy statement. you can press 'enter' and input values in the same line for eg. in the input of a 3*3 matrix:

'#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楼-- · 2019-01-04 15:37

I don't think what you want to do can be achieved with cin. What you can do is to write all your input in one line, with a delimiter of your choosing, and parse the input string.

查看更多
登录 后发表回答