Я очень новичок в этом и прошу прощения, если мой вопрос не ясен.
Я создал потокобезопасный регистратор на С++. Этот регистратор будет использоваться в большой программе и вызываться из нескольких мест. Я использую синглтон, поэтому есть только один экземпляр регистратора. Этот регистратор выводит в файл и на консоль. Он ведет себя подобно cout; он берет строку из другого файла (при необходимости объединяет ее), сохраняет фрагменты в буфере до тех пор, пока строка не будет завершена, а затем выводит с помощью cout. Строка сохраняется как const char*. Прямо сейчас мьютексы блокируются в одной функции и разблокируются в другой функции (это была моя проблема), которая перегружает оператор endl.
Моя проблема в том, что эта функция (где мьютексы разблокированы) работает только в том случае, если пользователь пишет endl в других файлах, где вызывается регистратор. Мне нужно, чтобы это была универсальная утилита, которая НЕ будет полагаться на то, что пишет пользователь, поскольку пользователь может не использовать endl или может использовать его слишком часто. Теперь мне нужны какие-то средства для моего регистратора, чтобы определить, когда строка (из другого файла) сделана, чтобы он мог очистить буфер. В настоящее время endl похож на ключевое слово, и мне нужны какие-то средства, чтобы заставить его работать без каких-либо ключевых слов.
Сначала я думал, что могу найти какие-то средства для проверки завершающего символа «\ 0» в строке, а затем использовать эту проверку, чтобы узнать, что строка выполнена, а затем очистить буфер. Однако, когда я это делаю, я получаю ошибки за пределами границ.
Спасибо за уделенное время