只读取字符串,字符和双精度文件中的双精度数

时间:2012-07-22 03:44:41

标签: c++ text-files

这是我拥有的文件的示例(这是一行):

B12                          MN =                              1.2                         G_{I}=                          3.4                               G_{B}  =                           9.4                        J_k =                               4.4                  1.4                      0.4                   -0.1                       -0.1               3.3                 9.3                      -5.7                 2

现在,我的麻烦在于我需要能够读取此文件并将我感兴趣的数字输入到另一个文件中。

所以,我试过这个:

ifstream in("Data.dat")
ofstream out
output.open("Output.dat")

double a1, ..., a12; 

while(1) {
           if(!(in >> a1 >> ... >> a12))
           break;

           output << a1 << a2 << a12; //say these are the three doubles I'm interested in.


}

然而,这失败了。我在输出文件中没有得到任何东西。我真的不知道如何解决这个问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您应该使用'string'而不是'double',测试代码如下:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
    ifstream in("t1.txt");
    string a1,a2,a3,a4,a5,a6,a7,a8,a9;
    ofstream out("t2.txt");

    while(1)
    {
        if((in>>a1>>a2>>a3>>a4>>a5>>a6>>a7>>a8>>a9))
        {
            out<<a1<<a3<<a5<<endl;
        }
        else
            break;
    }

    return 0;
}