我发现在c ++中使用流而不是像ReadFile,WriteFile等甚至fprintf这样的windows函数都非常容易.什么时候使用溪流不好?什么时候使用溪流好?使用流是否安全?为什么许多程序员不使用流?
这只是我一直想知道的事情,也许你可以放下一些智慧.
流通常非常安全.在某些情况下,它们可能很慢和/或笨拙.缓慢,主要是因为它们在您的代码和操作系统之间施加了一些额外的层,并且在错误的情况下这些层会增加开销.笨拙主要是与C的printf相比,而不是直接使用像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不支持的重叠读写等多种内容.如果这种情况让你充分利用这些,那么iostream往往不具备竞争力.
什么时候使用溪流不好?
Streams不保证是线程安全的.很容易想到一个没有同步就无法使用流的情况.
流对象通常非常"沉重".对于低内存或嵌入式环境,它们可能太重.
什么时候使用溪流好?
一般来说.
使用流是否安全?
是的,但是在异步共享流时你必须要小心.
为什么许多程序员不使用流?
首选,风格或他们首先学习不同的方法(或不同的语言).我发现很多旧的"c ++"在线例子都是用C语言编写的,更喜欢printf到cout.