【发布时间】:2015-10-08 21:30:57
【问题描述】:
我正在寻求一些帮助,将文件(16 位有符号小端整数原始数据)从命令行传输到我的程序:
cat data.dat | myprogram
然后它应该将数据转换为 16 位有符号整数。 它适用于前 12 个值。第 13 个值是错误的,后面是零。
第二个问题是程序似乎只进入了一次while循环。
我正在使用 Windows + MinGW。
我的代码:
#include <iostream>
using namespace std;
#define DEFAULT_BUF_LENGTH (16 * 16384)
int main(int argc, char* argv[])
{
char buf[DEFAULT_BUF_LENGTH];
while(cin >> buf)
{
int16_t* data = (int16_t*) buf; //to int
for(int i=0;i<18;i++)
{
cout << data[i] << endl;
}
}
return 0;
}
输出:
0
9621
-14633
-264
5565
-12288
9527
-7109
11710
6351
4096
-5033
5773
147
0
0
0
0
感谢您的帮助!
【问题讨论】:
-
查看this 讨论。在 Windows 上 stdin 以文本模式打开,并且某些字节表示文件结束,解决方案是以二进制模式重新打开它。
-
你不能使用
>>它转换行尾。您必须使用像cin.read()这样的无格式输入 函数。 en.cppreference.com/w/cpp/io/basic_istream