Input:Игнорирование символов во входном
23 + 47 = machula
3247 + 5machula2 = 3749
machula13 + 75425 = 77038
Я решал вопрос в spoj, где вход был в форме «string + s tring = string ". Я должен был сохранить первое, второе и третье числа в строках, пропуская «+» и «=». Для этого я создал две переменные char для хранения «+» и «=».
#include <iostream>
#include <string>
int main()
{
using namespace std;
int t;
cin >> t;
for (int iii = 0; iii < t; iii += 1)
{
cin.ignore();
int num1, num2, num3;
int condition = 0;
string input1;
cin >> input1;
if (input1.find("machula") != string::npos)
{
condition = 1;
}
char op1;
cin >> op1;
string input2;
cin >> input2;
if (input2.find("machula") != string::npos)
{
condition = 2;
}
char op2;
cin >> op2;
string input3;
cin >> input3;
if (input3.find("machula") != string::npos)
{
condition = 3;
}
switch (condition)
{
case 1:
num2 = stoi(input2);
num3 = stoi(input3);
num1 = num3 - num2;
break;
case 2:
num1 = stoi(input1);
num3 = stoi(input3);
num2 = num3 - num1;
break;
case 3:
num1 = stoi(input1);
num2 = stoi(input2);
num3 = num1 + num2;
break;
}
cout << num1 << " + " << num2 << " = " << num3 << endl;
}
return 0;
}
Есть ли лучший способ игнорировать «+» и «=» на входе вместе с непечатаемыми?
Используйте [regex] (http://www.cplusplus.com/reference/regex/regex_match/). –