这是我的代码。
#include <iostream>
#include <string>
#include <windows.h>
#include <iomanip>
using namespace std;
int main(){
char choice;
do{
double x;
double y;
char z;
double sum;
cout << "Pick a operation + - * /" << endl;
cin >> z;
cout << "Enter a number" << endl;
cin >> x;
cout << "Enter another number" << endl;
cin >> y;
if (z == '+'){
sum = x + y;
cout << "Answer: " << sum << endl;
}
else if (z == '-'){
sum = x - y;
cout << "Answer: " << sum << endl;
}
else if (z == '-'){
sum = x - y;
cout << "Answer: " << sum << endl;
}
else if (z == '*'){
sum = x * y;
cout << "Answer: " << sum << endl;
}
else if (z == '/'){
sum = x / y;
cout << "Answer: " << sum << endl;
}
cout << "Would you like to enter another equation? (y/n)" << endl;
cin >> choice;
} while (choice != 'n');
if (choice == 'n'){
return 0;
}
system("PAUSE");
return 0;
}
我要做的是让它不是每个新的cout
转到另一行,而是替换当前行。基本上,一切都会在一行中发生,cin
除外,cout
将显示在\r
下方的行中。我知道我可以使用cin
,但cout
会尝试覆盖cin
。我希望删除cout
输入,然后cout
将替换之前的STR_TO_DATE
。
我是一个初学者,所以我真的不知道该怎么做。
答案 0 :(得分:1)
虽然有办法做到这一点,但没有一个是标准的。此链接显示ANSI转义序列,但每个终端都不同,请记住文档是您的朋友。ANSI Escapes
答案 1 :(得分:1)
现代控制台模拟器足够快,您可以清除屏幕并只是重新打印要保留的文本,而不会出现明显的闪烁。如上所述,您还可以使用curses库。
您知道这一点,但是:当您打印回车字符\r
时,许多终端会执行此操作。历史上,当电传类型具有物理打字机打印轮和托架时,这将使托架返回到左侧位置并允许覆盖。在某些机器上(包括经典的Macintoshes),这将做其他事情,但它可以在今天的大多数控制台上运行,包括Windows cmd.exe
,OS X和Linux。