我正在編寫一個程序,它將對矩陣進行操作。我希望用戶能夠通過一次輸入一行來將數據輸入到矩陣中。所以它會首先詢問行中的值:1,列:1.用戶將鍵入適當的值,然後按回車鍵,之後他將鍵入行的值:1,列:2.沒有換行獲取輸入
這是個竅門:我希望控制檯在用戶按下回車鍵時不輸入新行。相反,我希望它只是插入一個製表符。這可能嗎?
非常感謝。
我正在編寫一個程序,它將對矩陣進行操作。我希望用戶能夠通過一次輸入一行來將數據輸入到矩陣中。所以它會首先詢問行中的值:1,列:1.用戶將鍵入適當的值,然後按回車鍵,之後他將鍵入行的值:1,列:2.沒有換行獲取輸入
這是個竅門:我希望控制檯在用戶按下回車鍵時不輸入新行。相反,我希望它只是插入一個製表符。這可能嗎?
非常感謝。
是的,這是可能的。不過,您需要使用控制檯/終端庫。用於* nix,wincon的Ncurses(Windows API的一部分;您可以#include windows.h
來使用它)...這裏有很多選擇。
實際算法將被簡單地檢查作爲按鍵事件發送的字符/使用信息getKey()的各種庫的等同形式,輸出所述輸入的字符到控制檯如果按壓未ENTER鍵,但仍然會引起要返回到屏幕的字符(即功能鍵,大寫鎖定,移位等不會導致任何迴應到控制檯或終端窗口),然後輸出\t
如果按下的鍵確實是ENTER。
將光標位置設置回上一行。在Windows中,您可以使用SetConsoleCursorPosition()
。
這不正是你想要的,但你可以通過使用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++;
}
如果用戶點擊ENTER - 如何以及爲什麼會變成別的東西?你想要做什麼? – littleadv 2011-06-16 20:30:01
這可能會使用文件作爲輸入無效。您也可能想要提供替代方法來輸入,而不是操縱控制檯,即gui。 – 2011-06-16 20:36:21