17

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?

4

7 回答 7

8

您不能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 键盘功能感兴趣。

如果您想要更广泛的受众,您将需要研究一些跨平台库,例如SFMLSDL

于 2013-03-04T20:16:27.180 回答
7

您还可以使用空格进行输入,而不是输入如下内容:

cin >> a >> b >> c;

并在输入中键入

10 20 30

然后

a=10
b=20
c=30 
于 2013-08-29T13:23:30.703 回答
2

正如其他人所指出的,您不能使用 来执行此操作cin,但可以使用 来执行此操作getchar()。你需要做的是:

  1. 使用单独收集每个字符(例如,在读入时getchar()将每个字符添加到 a 的末尾),然后string
  2. 读取每个字符后,决定何时到达一个变量值的末尾(例如,通过检测' '输入中的一个或多个字符,如果您正在读取intdouble值),然后
  3. 如果您已到达变量文本的末尾,请将您构建的字符串转换为适当类型的变量(例如intdouble等),然后
  4. 将任何内容输出到可能需要的行上,然后
  5. 继续您正在读取的下一个变量。

稳健地处理错误会很复杂,所以我没有为此编写任何代码,但您可以看到可以使用的方法。

于 2013-03-04T19:41:28.213 回答
1

我不认为你想做的事情可以用cin来实现。您可以做的是将所有输入写在一行中,并使用您选择的分隔符,然后解析输入字符串。

于 2013-03-04T19:34:54.093 回答
0

这不可能。引用@Bo Persson 的话,它不是由 C++ 控制的,而是控制台窗口。

于 2013-03-04T19:34:38.883 回答
0

只需使用 gotoxy 语句。您可以按“输入”并在同一行中输入值,例如。在 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();}
于 2014-03-07T19:53:25.190 回答
0

我无法发表评论,但如果你在整数之间留有空格,那么你可以获得所需的效果。这cin也适用。

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

如果您输入您的值,10 20 30那么它们将分别存储在 a、b 和 c 中。

于 2016-09-08T12:40:38.530 回答