В настоящее время я пытаюсь реализовать подкласс stringbuf, чтобы позволить токену буфера для определенных символов ('\ n' в моем случае) и предпринять действие, если этот символ встречается (выгрузить сообщение в логгер и очистить буфер потом в моем случае).
Чтобы достичь этой цели, я переопределил sputc (чтобы реализовать наблюдение за '\ n') и xsputn (чтобы действительно использовать sputc, поскольку реализация GCC, по-видимому, по умолчанию этого не делает).
В целях отладки я позволил sputc записать каждый символ, переданный ему в стандартный вывод.
Теперь это мой вопрос: если я использую что-то вроде
mystream << "Some text" << std::endl;
sputc получает каждый символ, кроме '\ n', который должен вызываться с помощью std :: endl, поэтому ожидаемое действие не выполняется, потому что \ n не передается.
Если я использую что-то вроде
mystream << "Some text" << '\n';
или даже
mystream << "Some text" << "\n" << std::flush;
все работает как положено, и моя реализация sputc получает символ '\ n'.
Так что мой вопрос: не должны ли обе строки кода делать то же самое в отношении строкового буфера позади, и если нет, какие другие методы мне нужно переопределить, чтобы получить '\ n'?