You mean because of the 16-bit character type baked into the language even though Unicode has moved past that?
> Technically, C++ standard could feature an abstract interface for a stream of bytes.
That's what iostreams are. Turns out such abstractions come with overhead and other limitations and you need to use OS-specific APIs for even slightly advanced features anyway.
> Many other languages have managed to design high-level platform agnostic abstractions over these things, and implemented them in the standard libraries.
And these lowest common denominator "abstraction" result in developers making software that doesn't work like users of the OS expect.
> By now this applies to files, file systems, pipes, and TCP sockets.
Not at all. Async interfaces are all the rage these days. Meanwhile browsers have moved from TCP to QUIC (which is much more than a stream of bytes so would need a completely different abstraction) and it's not unlikely that other applications will want to move to it too. You can make a basic bitch abstraction for these but if everyone that cares about performance needs to fall back to OS-specific interfaces then that doesn't help that much.