什么是C ++相当于Java的java.io.FileInputStream.read()?

时间:2016-06-25 20:42:17

标签: java c++ inputstream

如何将以下Java行转换为C ++代码?

 FileInputStream fi = new FileInputStream(f);
 byte[] b = new byte[188];
 int i = 0;
 while ((i = fi.read(b)) > -1)// This is the line that raises my question.
 {
 // Code Block
 }

我正在尝试运行以下代码行,但结果是错误。

 ifstream InputStream;
 unsigned char *byte = new unsigned char[188];
 while(InputStream.get(byte) > -1)
 {
 // Code Block
 }

1 个答案:

答案 0 :(得分:3)

您可以使用std::ifstream,并使用get()逐个读取单个字符,或使用提取运算符>>来读取任何给定类型的纯文本输入流,或read()读取连续的字节数。

请注意,与java read()相反,c ++ read返回流。如果您想知道读取的字节数,则必须使用gcount(),或者使用readsome()

所以,可能的解决方案可能是:

ifstream ifs (f);  // assuming f is a filename
char b[188]; 
int i = 0;
while (ifs.read(b, sizeof(b))) // loop until there's nothing left to read
{
   i = ifs.gcount();   // number of bytes read
   // Code Block
}