我正在编写一个程序,它将对矩阵进行操作。我希望用户能够通过一次输入一行将数据输入矩阵。因此它首先要求行中的值:1,列:1。用户将输入适当的值,然后按回车键,之后他将输入行的值:1,列:2。
这就是诀窍:我希望控制台在用户按Enter键时不输入新行。相反,我希望它只是插入制表符。这可能吗?
非常感谢。
答案 0 :(得分:1)
是的,这是可能的。但是,您需要使用控制台/终端库。 Ncurses for * nix,wincon(Windows API的一部分;你可以#include windows.h
来使用它)......有很多选择。
实际的算法只是检查作为键事件发送的字符/使用各种库的getkey()等效项,如果按下的键不是ENTER但仍然会导致字符,则将输入的字符输出到控制台被回显到屏幕上(即功能键,大写锁定,移位等不会导致任何回显到控制台或终端窗口),然后如果按下的键确实是ENTER,则输出\t
。
答案 1 :(得分:1)
将光标位置设置回上一行。在Windows中,您可以使用SetConsoleCursorPosition()
。
答案 2 :(得分: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++;
}