2011-06-16 46 views
1

我正在編寫一個程序,它將對矩陣進行操作。我希望用戶能夠通過一次輸入一行來將數據輸入到矩陣中。所以它會首先詢問行中的值:1,列:1.用戶將鍵入適當的值,然後按回車鍵,之後他將鍵入行的值:1,列:2.沒有換行獲取輸入

這是個竅門:我希望控制檯在用戶按下回車鍵時不輸入新行。相反,我希望它只是插入一個製表符。這可能嗎?

非常感謝。

+0

如果用戶點擊ENTER - 如何以及爲什麼會變成別的東西?你想要做什麼? – littleadv 2011-06-16 20:30:01

+0

這可能會使用文件作爲輸入無效。您也可能想要提供替代方法來輸入,而不是操縱控制檯,即gui。 – 2011-06-16 20:36:21

回答

1

是的,這是可能的。不過,您需要使用控制檯/終端庫。用於* nix,wincon的Ncurses(Windows API的一部分;您可以#include windows.h來使用它)...這裏有很多選擇。

實際算法將被簡單地檢查作爲按鍵事件發送的字符/使用信息getKey()的各種庫的等同形式,輸出所述輸入的字符到控制檯如果按壓未ENTER鍵,但仍然會引起要返回到屏幕的字符(即功能鍵,大寫鎖定,移位等不會導致任何迴應到控制檯或終端窗口),然後輸出\t如果按下的鍵確實是ENTER。

1

將光標位置設置回上一行。在Windows中,您可以使用SetConsoleCursorPosition()

0

這不正是你想要的,但你可以通過使用getline獲得所有在一行行輸入得到相同的效果,然後用std::stringstream解析出的值。

std::string row; 
getline(cin,row); 
std::stringstream ss(row); 
int j=0,i=currentrow; //put this in a loop over your rows 
int input; //or float, double, whatever 
while(ss >> input) 
{ 
     mat[i][j] = input; 
     j++; 
}