2011-05-02 163 views
1

在C++中,如果我们让程序从用户那里获取输入,它可能是一些整数或字符。如何让两个输入出现在同一行上?

该输入后,下一个输出或下一个输入自动写入下一行。

#include <iostream> 

int main() 
{ 
    int a,b; 
    std::cout<<"Enter two numbers to add\n"; 
    std::cin>>a; 
    std::cin>>b; 
    std::cout<< a+b; 
} 

输出是这样

Enter two numbers to add 
3 
5 
8 

我想3和5写在同一行..

+1

超级用户不是关于编程,而是属于StackExchange。被标记为移动。 – slhck 2011-05-02 17:42:21

+5

@slchk“堆栈交换”是一个非常通用的目的地;)我建议使用StackOverflow。 – 2011-05-02 17:53:16

+0

@Daniel Whoops,今天我在屏幕前花费了太多时间。 – slhck 2011-05-02 18:10:22

回答

1

你正在寻找被称为单词 “解析”。您将整个输入作为1个变量,并使用适合您的任何方法进行分割。一些编程语言具有一些内置方法,用于根据您提供的值将字符串输入分解为数组。您可能想看看:Split a string in C++?

+0

我不认为这是OP的问题。他谈论的是将输出写在多行而不是一行 - 对解析有什么影响? – razlebe 2011-05-02 22:11:05

+0

@razlebe:相当多。 OP问题的根本原因在于,当每行输入一个输入时,大多数终端将渲染换行符,以便在下一行显示_any_进一步的活动。显然,从一行输入解析两个输入将防止第二输入出现在终端的第二行上。 – 2011-05-02 22:39:43

+0

@Tomalak Geret'kal - 公平点。 :)我猜测答案中的第一句话对我来说就是浑浊了。解析是一个相关的问题,一旦他理解了他当前问题的根源,而不是解决问题本身的根本原因,他必须解决。 – razlebe 2011-05-02 22:53:30

0

输入出现在两个单独的行上与您的程序无关;这是因为,在输入输入时,您在3之后按<Enter>。由此产生的换行符由您的终端/控制台呈现,而不是您的程序。

使用istream::operator>>(int)将自动跳过前导空格。所以你的用户也可以在一行上写 3 5std::cin>>a;会消耗3,并且std::cin>>b;会跳过空间并消耗5。您的终端/控制台应如下所示:

Enter two numbers to add 
3 5 
8 

请注意,这与您的程序代码完全无关。如果用户在数字之间按<Enter>,则无法对此进行任何处理,而无法完全控制终端/控制台。

可以来完成,在许多其他系统在Windows上,ncurses使用_getch(),或任何有问题的OS提供。您将直接读取按键,而无需终端/控制台回显输入内容。然后你会负责回声,线编辑等。

虽然这是一个完全不同的问题。

相关问题