2011-09-09 4 views
0

Fortranフォーマットのファイルを読み込みながら、Fortran read(*,*)の機能をC++でミラーリングする方法を探しています。私はよく知っていて、シンタックスのようなストリームを使いたいと思っていますが、自分で書く方法やストリームを利用して私が必要なことをする方法がわかりません。私は、次のような行を持つファイルを持っている:C++ストリームを使用して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 

あなたは、私が別の区切り文字(改行、スペースやカンマ)などの文字列を読み込むとき、それは引用符を同様に尊重することを確認することに対処する必要が見ることができるように「忘れる」(つまり、結果の文字列の一部として終わることはありません)。結果のC++のようになるのに対し

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 

:にstringstreamとの私の基本的なテストから

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 

、それが複数の区切り文字を受け入れ、保持することはできません

Fortranでは、あなたは次のように書きます逆のカンマ。

どのような行動をとっているのですか?

+0

が仕事のために優れているC++での流れのように思える参照してください。 –

答えて

0

実際にFortranを活用してこの問題を解決することができました。 Fortranがファイルを比較的容易に(そしてストリームのように)読むことができるようになったので、逆さまのコンマでカプセル化された文字列を読むことができるという大きな問題は解決しました。完全なラッパーを提供するために、私はFortranファイル単位を使用してファイルを読み込みました。完全な実装については

here

関連する問題