获得没有换行符的输入

时间:2011-06-16 20:28:00

标签: c++ formatting user-input

我正在编写一个程序,它将对矩阵进行操作。我希望用户能够通过一次输入一行将数据输入矩阵。因此它首先要求行中的值:1,列:1。用户将输入适当的值,然后按回车键,之后他将输入行的值:1,列:2。

这就是诀窍:我希望控制台在用户按Enter键时不输入新行。相反,我希望它只是插入制表符。这可能吗?

非常感谢。

3 个答案:

答案 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++;
 }