Потоки, как правило, довольно безопасны.При некоторых обстоятельствах они могут быть медленными и / или неуклюжими.Медленно, в основном, связано с тем, что они накладывают несколько дополнительных уровней между вашим кодом и ОС, и при неправильных обстоятельствах эти уровни могут добавить накладные расходы.Неуклюжесть в основном по сравнению с printf C, а не прямое использование чего-то вроде WriteFile (который вообще не поддерживает форматирование).Однако, например, рассмотрим:
printf("%2.2x", ch);`
до
std::cout << std::hex << std::setw(2) << std::setprecision(2) << std::setfill('0') << ch;
std::cout << setfill(' ');
Затем учтите тот факт, что если вам небезразличен i18n, printf
использует строку, которую легко прочитать извнешний источник, где поток C ++ встраивает все форматирование в структуру кода, поэтому почти любое изменение в форматировании требует переписывания кода, перекомпиляции и перекомпоновки.
CreateFile, ReadFile
и т. д. также позволяютмножество таких вещей, как файлы с отображением в памяти и перекрывающееся чтение и запись, которые вообще не поддерживаются iostreams.Если ситуация позволяет вам эффективно использовать их, iostreams часто не будет конкурентоспособным.