В настоящее время я пытаюсь реализовать подкласс stringbuf, чтобы позволить токенизировать буфер для определенных символов ('\n' в моем случае) и предпринять действие, если этот char происходит (выдает сообщение журналу и после этого очистите буфер в моем случае). Для достижения этой цели я перепробовал 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' char.
Итак, мой вопрос: не должны ли обе строки кода делать то же самое в отношении stringbuf позади, а если нет, какие другие методы мне нужно переопределить, чтобы получить '\n'?