Тип StartTime и EndTime является строкой, в то время как тип значения, возвращаемого std :: put_time, не является строкой, поэтому вы не можете напрямую сравнивать эти два, если у вас нет некоторыхДля этого перегружается оператор сравнения.
В идеале вы должны преобразовать StartTime и EndTime в тип std :: time, а затем сравнить с SystemTime, полученным из localtime.
Здесь вы хотите преобразовать системное времяв строку, поэтому вам нужно поместить результаты put_time в строку:
...
string SystemTime;
stringstream sysTime(systemTime);
sysTime << std::put_time(localtime(&t), "%H%M"); //Output example: 0700
...
Снова обратите внимание, что сравнение объектов std :: time лучше, чем преобразование времени в строку и последующее сравнение строки, так как это подвержено ошибкамнапример, вам нужно позаботиться о местах и т. д.