için kedi ile bir veri dosyası Boru programıma komut satırından (16 bit küçük endian imzalı ham verileri tamsayılar) verileri 16 bit imzalı tam sayıya dönüştürmelidir. İlk 12 değer için çalışır. 13. değer yanlış, ardından sıfırlar.Bir dosyayı akan bazı yardım arıyorum bir C++ programının
İkinci problem, programın while döngüsüne sadece bir kez girmiş gibi görünmesidir.
Windows + MinGW kullanıyorum.
Benim Kod:
#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;
}
Çıktı: Yardımlarınız için
0
9621
-14633
-264
5565
-12288
9527
-7109
11710
6351
4096
-5033
5773
147
0
0
0
0
teşekkürler!
olası yinelenen (http://stackoverflow.com/questions/17508626/piping-for-input-output) –
Kontrol [this] (http://stackoverflow.com/a/1599093/4074081) tartışma. Windows'da stdin, metin modunda açılır ve belirli bir bayt, dosyanın sonunu gösterir, çözüm, ikili modda yeniden açmaktır. – dewaffled
Kullanamıyorsunuz >> >> 'satır sonlarını dönüştürür. Cin.read() 'gibi ** biçimlendirilmemiş giriş ** işlevlerini kullanmanız gerekir. http://en.cppreference.com/w/cpp/io/basic_istream – Galik