Сначала вы используете >>
для char
с, что отбрасывает пробелы.
Значения ascii для символов 100+50-25+0+123-1
:
49, 48, 48, 43, 53, 48, 45, 50, 53, 43, 48, 43, 49, 50, 51, 45, 49
Их сумма равна 815
.Это объясняет ваш вывод.Вы должны читать цифры и операторы вместо отдельных символов.
Для чтения в файле вы можете использовать std::ifstream
, например:
#include <fstream>
#include <string>
int main()
{
std::ifstream ifs{"file name here"}; // NOTE: put your own file name here!!
int sum;
ifs >> sum;
for (char c; ifs >> c;)
{
int num;
ifs >> num;
if (c == '+')
sum += num;
if (c == '-')
sum -= num;
}
std::cout << sum << "\n";
}
Или вы также можете использовать синтаксис каналаваша система предоставляет то, что вы подразумеваете под «перенаправлением».