在C++中,可以用SPACE代替ENTER进行输入吗

Can SPACE, instead of ENTER, be used to take input in C++?

本文关键字:ENTER 代替 输入 SPACE C++      更新时间:2024-09-27

我正在为运算符重载编写一个非常简单的C++程序,但遇到了一个问题。我想用空格输入,而不是输入。我基本上想使用运算符>gt;但问题是,在输入虚部之前+i("但按enter键时,光标会移动到终端的下一行。我该如何避免这种情况?"?这就是输入正在做的事情。

istream &operator>>(istream &i, Complex &num){
cout << "(";
i>>num.a;
cout << ")+i(";
i>>num.b;
cout << ")" << endl;
return i;
}

这就是输入的样子。

(-1
)+i(5
)

这就是我希望输入的样子。

(-1)+i(5)

之所以只在输入后才向std::cin提供信息,是因为默认情况下标准输入是缓冲的。使其不缓冲可以让您控制何时立即处理或何时缓冲输入。

这取决于平台,但在*nix系统中运行:

$stty原始&amp;stty回波

这使得输入(和输出(不缓冲,同时保留回声(这样您就可以看到您的输入(。

当读取整数时,程序将立即使用任何分隔符进行响应。

示例:

int main() {
while (std::cin) {
int a, b;
std::cout << "( ";
std::cin >> a;
std::cout << ") +i ( ";
std::cin >> b;
std::cout << ")= " << a << " + " << b << 'i' << "rn";
// Note that we need to return cursor to leftmost ^ position
}
}

运行:

g++测试.cpp&amp;stty原始&amp;stty echo&amp/a.out

输出(输入="1 2 3 4 5 6":(

( 1 ) + i( 2 ) = 1 + 2i
( 3 ) + i( 4 ) = 3 + 4i
( 5 ) + i( 6 ) = 5 + 6i
( |