如何将以下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
}
答案 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
}