fwrite 和 fread的参数问题
有时,我们在阅读别人的代码时会看到这样的写法:
fwrite(buff, 1, 8912, fout);
fread(buff, 1, 8912, fin);
我就觉得奇怪,为什么不写成:
fwrite(buff, 8912, 1, fout);
fread(buff, 8912, 1, fin);
感觉第二种写法会有效率一点。因为其一次就写完,而第一种需要写多次,每次只写一个字节。后来看多代码了,发现很多人都这样写的。我就觉得里面肯定有文章。用谷歌一搜,就发现已经有老外问到这个问题了。http://stackoverflow.com/questions/19410230/fread-fwrite-size-and-count 和 http://stackoverflow.com/questions/10564562/fwrite-effect-of-size-and-count-on-performance。
从回答中可以看到,第一种写完更合理一点。首先,实现fwrite和fread函数的人不是傻蛋,其不会实现为:每次只写一个字节,写8912次 。最重要的是,在第一种写法中可以知道写了/读了多少字节。特别是在读的时候,很有必要。如果是第二种写法,在读的时候,只能返回0或者1,根本就不知道究竟读了多少字节。
C++11的编译选项
C++11越来越流行了,有必要学一下C++11。这里和这里可以看到各个编译器对C++11的支持。安装了支持C++11的编译器gcc,还要加上编译选项-std=c++11。编译命令如下:
g++ -std=c++11 test.cpp -o test
如果想在Windows下使用支持C++11的Mingw,可以到这里下载。
对于Qt Creator,这个编译选项是在.pro文件添加的,添加下面内容即可:
QMAKE_CXXFLAGS += -std=c++11