[英]Splitting a getline() string into multiple int and char variables?
我在理解如何正确操作字符串时遇到了一些麻烦。 下面的程序是一个简单的计算器。
当我通过多个cin语句将输入直接放入变量中时,一切正常。 现在,我想使用getline()将输入作为字符串并将数字/运算符存储在getline()的现有变量中。
我的主要问题是我希望程序能够识别2+2
和2 + 2
。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int Num1, Num2, Num3 = 0, result;
char Operator1, Operator2 = 0;
string input, in1;
cout << "Enter your equation on one line.\n";
getline(cin, input);
//this is where getline needs to be manipulated into Num1/2/3 and Operator1/2
cout << input;
if (Operator2 != 0)
{
if (Operator1 == '+')
{
if (Operator2 == '+')
{
result = Num1 + Num2 + Num3;
cout << "I made it to A!";
}
else if (Operator2 == '-')
{
result = Num1 + Num2 - Num3;
}
else if (Operator2 == '/')
{
result = Num1 + Num2 / Num3;
}
else if (Operator2 == '*')
{
result = Num1 + Num2 * Num3;
}
}
else if (Operator1 == '-')
{
if (Operator2 == '+')
{
result = Num1 - Num2 + Num3;
}
else if (Operator2 == '-')
{
result = Num1 - Num2 - Num3;
}
else if (Operator2 == '/')
{
result = Num1 - Num2 / Num3;
}
else if (Operator2 == '*')
{
result = Num1 - Num2 * Num3;
}
}
else if (Operator1 == '/')
{
if (Operator2 == '+')
{
result = Num1 / Num2 + Num3;
}
else if (Operator2 == '-')
{
result = Num1 / Num2 - Num3;
}
else if (Operator2 == '/')
{
result = Num1 / Num2 / Num3;
}
else if (Operator2 == '*')
{
result = Num1 / Num2 * Num3;
}
}
else if (Operator1 == '*')
{
if (Operator2 == '+')
{
result = Num1 * Num2 + Num3;
}
else if (Operator2 == '-')
{
result = Num1 * Num2 - Num3;
}
else if (Operator2 == '/')
{
result = Num1 * Num2 / Num3;
}
else if (Operator2 == '*')
{
result = Num1 * Num2 * Num3;
}
}
else
{
cout << "I don't recognize that operator. Did you type in one of these?: + - * /";
}
}
else if (Operator2 == 0)
{
if (Operator1 == '+')
{
result = Num1 + Num2;
}
else if (Operator1 == '-')
{
result = Num1 - Num2;
}
else if (Operator1 == '*')
{
result = Num1 * Num2;
}
else if (Operator1 == '/')
{
result = Num1 / Num2;
}
else
{
cout << "I don't recognize that operator. Did you type in one of these?: + - * /";
}
result = Num1 + Num2;
cout << "I made it to B!";
}
cout << "Your result is: " << result << endl << endl;
return 0;
}
任何帮助将不胜感激,但我更喜欢解释而不是工作代码。
我对程序的数学逻辑或using namespace std
方面不感兴趣。
首先,您应该问自己是否有必要存储整个字符串,而不是像之前所说的那样直接在变量上使用cin
。
如果您确实确实想存储整个字符串(就像现在为回显它所做的那样),则可以考虑使用字符串流(由于某种原因,您已经在文件中包含了sstream
):
getline(cin, input);
std::istringstream iss(input);
// you can now use iss just as cin.
// I'm not sure exactly what you want to do, but it would look something like this:
iss >> num1;
iss >> Operator1;
iss >> num2;
cout << input;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.