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