char choice;
float inputa, inputb;
cin >> inputa >> choice >> inputb;
while(inputa != 0 && choice != '0' && inputb != 0)
{
cout << " = " << calculation(inputa,choice,inputb) << endl << endl;
cin >> inputa >> choice >> inputb;
}
system("PAUSE");
return 0;
这就是屏幕的样子:
5 + 4
= 9
用户提供他们的输入并按下输入,这就是我猜他们到下一行的原因,但有没有办法让它显示:
5 + 4 = 9
显示结果后,它会使用endl
转到下一行,用户可以再次输入问题。
我是一个完全的初学者,如果这个问题没有多大意义,那就很抱歉。
答案 0 :(得分:1)
你不能使用它,因为cin
在你击中后打印每个角色。您必须定义自己的输入函数。
例如,你可以在getch
中使用conio.h
(这不是一个有效的解决方案,因为getch只接受一个字符。你必须采用另一种方式。这里的重要性是得到主意)。
#include <iostream>
#include <conio.h>
using namespace std;
void input(float *a, char *c, float *b)
{
char in;
do {
in = getch();
cout << in;
} while (in == ' ');
*a = in - '0';
do {
in = getch();
cout << in;
} while (in == ' ');
*c = in;
do {
in = getch();
cout << in;
} while (in == ' ');
*b = in - '0';
}
int main()
{
char choice;
float inputa, inputb;
cout << "Expression: ";
input(&inputa, &choice, &inputb);
cout << " = " << inputa+inputb << endl;
return 0;
}
答案 1 :(得分:0)
有两种方法可以实现您的目标。
首先 - 您可以在cout之前删除终端中的最后一个字符,因此取消了endl。
第二 - 您可以关闭终端上的回声,关闭输入缓冲并处理整个输入回声。
不幸的是,这两种方法都无法从纯C ++中获取。您必须使用某些终端API,具体取决于您的平台(Windows上的conio.h和Linux上的termios.h)。虽然第一种方法更容易编码,但我不确定它是否可以在所有平台上使用。通用解决方案根本不可能。
我知道这对初学者来说可能听起来很可怕,所以你可能会对更容易解决的问题感到满意,这可能仍然适合你的需求。您可以在平台上找到清除整个终端的任何命令(在Linux上清除,在Windows上清除),通过cstdlib中的系统函数调用它并打印整个等式。
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
float a,b; char choice;
cin>>a>>choice>>b;
system("clear"); //on Windows "cls"
cout<<a<<choice<<b<<"="<<calculation(a,choice,b)<<"\n";
system("PAUSE");
return 0;
}