Mar*_*tin 2 c++ int fstream short
我有一个简单的程序,我在MinGW和Visual C++ 2008 Express中编译,并且都提供大于88200的输出文件.当我设置s = 0时,两个程序都按预期工作.我究竟做错了什么?
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
int i;
short s;
fstream f;
f.open("test.raw", ios_base::out);
for(i = 0; i < 44100; i++)
{
s = i & 0xFFFF; // PROBLEM?
f.write(reinterpret_cast<const char *>(&s), sizeof(s));
}
f.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
尝试:
f.open("test.raw", ios_base::out | ios_base::binary);
Run Code Online (Sandbox Code Playgroud)
当你写出char恰好与换行符匹配的s时,\n它们将被转换为标准的windows换行序列\r\n.以二进制模式打开文件会停止执行此转换.
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |