Я не знаю, что такое .Net, но, поскольку вы говорите, что вопрос будет одинаковым для потоков Java, наиболее очевидным преимуществом потоков C ++ является то, что все форматирование встроено в std :: ios. Вы можете вполне обоснованно утверждать, что это ортогонально бизнесу шунтирования байтов вокруг, и поэтому должно быть отдельной задачей. Затем C ++ снова разделяет их (см. Streambuf), просто то, что происходит с , вызывает поток, это то, что также выполняет форматирование, тогда как Java вызывает простую вещь как поток, а затем программист украшает его сканерами, читателями или еще чем-то.
Как обычно, Java предоставляет простой интерфейс, C ++ предоставляет «чрезвычайно настраиваемый и чрезвычайно мощный» интерфейс, который выглядит довольно неудобно. Простота использования - не единственная забота комитета по стандартизации C ++.
Что касается того, почему комитет не предоставил более Java-подобный альтернативный API, как Microsoft сделал в .NET, я подозреваю:
- Комитет предпочитает, чтобы третьи лица выполняли такую работу с адаптером.
- Комитету нравятся многие аспекты текущего API, например, универсальная перегрузка
operator<<
и operator>>
. Я не уверен, является ли это частью того, что вам не нравится в потоках C ++, но это, безусловно, часть того, что людям, которые им нравятся, нравится в них.
Во всяком случае, с тех пор как он был впервые опубликован, на самом деле существенного обновления стандарта C ++ не было, поэтому даже если бы комитет хотел изменений (а это не AFAIK), к настоящему времени он все еще был бы только в черновом варианте. , для выпуска возможно в этом году, может быть в следующем году.