Моя программа должна читать команды и выполнять их одним числом. Он должен +, -, /, * номер, но он читает только первый штрих.
ifstream fin("file.txt");
string line;
while(getline(fin,line))
{
if(line[0] == '+')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double p = 0.0;
ss >> p;
res += p;
}
n = "";
if(line[0] == '-')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double m = 0.0;
ss >> m;
res -= m;
}
n = "";
if(line[0] == '*')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double di = 0.0;
ss >> di;
res *= di;
}
n = "";
if(line[0] == '/')
{
for(int i = 1; i < 10; i++)
{
n += line[i];
}
ss << n;
double mu = 0.0;
ss >> mu;
res /= mu;
}
n = "";
}
пример файла:
+1
-2
*5
выход:
1
Ожидаемый вывод равен -5, но выводится 1. Почему это происходит и что мне делать? ss — строковый поток, n — строка, res — двойное число, strokes[] — строки.