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?
问问题
52043 次
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 键盘功能感兴趣。
于 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()
。你需要做的是:
- 使用单独收集每个字符(例如,在读入时
getchar()
将每个字符添加到 a 的末尾),然后string
- 读取每个字符后,决定何时到达一个变量值的末尾(例如,通过检测
' '
输入中的一个或多个字符,如果您正在读取int
或double
值),然后 - 如果您已到达变量文本的末尾,请将您构建的字符串转换为适当类型的变量(例如
int
,double
等),然后 - 将任何内容输出到可能需要的行上,然后
- 继续您正在读取的下一个变量。
稳健地处理错误会很复杂,所以我没有为此编写任何代码,但您可以看到可以使用的方法。
于 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 回答