2011-05-02 161 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提供。您將直接讀取按鍵,而無需終端/控制檯回顯輸入內容。然後你會負責回聲,線編輯等。

雖然這是一個完全不同的問題。

相關問題