我正在学习 C++。我想在 C++ 程序中读取一些由 fortran 程序生成的文件。我要读取的每个文件都包含一个数字列表,这些数字可以是 0、1 或 -1。这些数字是在 fortran 程序中定义的 1 字节整数数组的元素。下面写了一个示例 fortran 代码以及一个示例 C++ 代码(我尝试将文件读入一个无符号整数数组,开始时)。在 fortran 代码中,我在二进制文件中写入一个 1 字节整数数组,然后将该二进制文件读入数组并打印数组元素。当我尝试将相同的二进制文件读入 C++ 代码中的数组,然后打印数组元素时,输出是意外的。有人可以帮我做对吗?如果有人从 fortran 代码中给出第二个 do-loop 的 C++ 等效项,那就太好了。自从,
fortran90 代码:
implicit none;
integer*1 a(1:2),i
open(10, file="binary.bin", access="stream", form="unformatted")
do i=1,2,1
a(i)=1
write(10) a
enddo
close(unit=10)
open(20, file="binary.bin", access="stream", form="unformatted")
do i =1,2,1
read(20) a(i)
write(*,*) a
enddo
close(unit=20)
end
输出:
1
1
C++ 代码:
#include <iostream>
#include <fstream>
int main()
{
int i = 1;
int j = 1;
int max_i = 2;
char a[2];
using namespace std;
std::ifstream myinputFile;
myinputFile.open ("binary.bin", std::ios::in | std::ios::binary);
if (!myinputFile.is_open()) return false;
for (i = 1; i <= max_i; ++i) {
myinputFile.read (a, 2);
std::cout << i <<" "<< a[i] << std::endl ;
}
return 0;
}
Output:
1
2 @
-----------
Expected output:
1 1
2 1