0
我正在寻找一种方法来在读取fortran格式的文件时在C++中对Fortran read(*,*)
功能进行镜像。我很熟悉,并希望使用类似语法的流,但我不确定如何编写我自己的/使用流来做我需要的。我有一个线,如文件:使用C++ Streams读取Fortran记录格式文件
'Version' '5.3'
'This set has 1 member'
'Variable','nlo','EvolCode'
'list',1,1
1.E-05,1.,1.25,10000000.
0.00949 0.00208 -8.77372 0.89445 0.00000 0.00000 0.43318 0.89446
正如你可以看到我有应付不同的分隔符(换行,空格和逗号),以及确保在字符串中读取时,它尊重了引号,以及作为“忘记它们”(即它们不会作为结果字符串的一部分)。
在FORTRAN你会写是这样的:
read(*,*) dummyString, versionString
read(*,*) descriptoinString
read(*,*) type, order, code
read(*,*) listType, number, repeats
read(*,*) double1, double2, double3, double4
read(*,*) a1, a2, a3, a4, a5, a6, a7, a8
然而,得到的C++会是这样:
stream >> dummyString >> versionString;
stream >> descriptoinString
stream >> type >> order >> code
stream >> listType >> number >> repeats
stream >> double1 >> double2 >> double3 >> double4
stream >> a1 >> a2 >> a3 >> a4 >> a5 >> a6 >> a7 >> a8
我与stringstream的基本测试,它不能接受多个分隔符,并保持引号。
什么是最佳行动方案?
好像C++中的流对工作很好。 –