如何使用C ++更新控制台中打印的值
例:_
价值印刷:10
现在我可以更新打印值了吗?
我做过这样的事情:
void CursorXY(int x, int y)
{
COORD coords = { x, y };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coords);
}
int main()
{
int x = 0;
cout << "Value: " << x << endl;
cout << "Some any value!" << endl;
gotoXY(7, 0);
cin >> x;
gotoXY(0, 2);
GetMessage(NULL, NULL, 0, 0);
return 0;
}
我的问题是,是否有任何不那么可怕的形式? THX。
答案 0 :(得分:0)
我可能会定义一个存储自己位置和值的field
类。更新值时,它会相应地更新显示:
template <class T>
class field {
int x;
int y;
int w;
T value;
public:
field(int x, int y, w = 0, T value = 0) : x(x), y(y), w(w), value(value) {
redraw();
}
field &operator=(T const &new_val) {
value = new_val;
redraw();
}
voi redraw() {
gotoXY(x,y);
std::cout << std::string(' ', w));
gotoXY(x, y);
std::cout << std::setw(w) << value;
}
std::istream &operator>>(std::istream &is, field &f) {
is >> f.value;
redraw();
return is;
}
};
然后我们可以使用这样的东西:
field<int> x(7, 0);
std::cout << "Please enter a number: ";
std::cin >> x;
答案 1 :(得分:0)
使用您的( dom, was_blocked, count )
功能,但将其置于循环中以使其跳回
然后更新。
就像下面的代码一样..
gotoxy()