Использование потоков C ++ для чтения файлов в формате Fortran. - PullRequest
0 голосов
/ 09 сентября 2011

Я ищу способ отразить функциональность Fortran read(*,*) в 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

Как вы можете видеть, мне приходится иметь дело с различными разделителями (символ новой строки, пробел и запятая), а также убедиться, что при чтении в строках он учитывает кавычкиа также «забывает их» (т.е. они не заканчиваются как часть получающейся строки).

В фортране вы бы написали что-то вроде:

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 он не может принимать несколько разделителей и хранит кавычки.

Каков наилучший способ действий?

1 Ответ

0 голосов
/ 09 сентября 2011

Мне удалось решить эту проблему, фактически используя Fortran.Это имело смысл, поскольку Fortran может читать файл относительно легко (и в виде потока), и это избавило от большой проблемы, связанной со способностью читать строки, заключенные в кавычки.Чтобы обеспечить более полную оболочку, я также прочитал в файле, используя файловые единицы fortran.

Для полной реализации см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...