Мне нужна помощь в передаче файла (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
Спасибо за вашу помощь!
>>
, он преобразует окончания строк. Вы должны использовать функции неформатированного ввода, такие какcin.read()
. en.cppreference.com/w/cpp/io/basic_istream - person Galik   schedule 19.07.2015