C ++解析输入文件并将数据复制到输出文件

时间:2011-05-01 12:48:29

标签: c++ function file-io

我有一个名为input.txt的文件,它包含一系列嵌套对象,其中每个对象都由{和}分隔。对象中的属性包含一个名称,后跟至少一个空格,后跟一组由(和)分隔的参数。逗号分隔多个参数,见下文

input.txt中

{
colour (3)
position (3,4)
size (2)
{
position (13,4)
size (2)
colour (5)
}
...

如何创建一个函数来解析输入文件并将数据复制到输出文件?

到目前为止我已经尝试了

parser(char filenamein[], char filenameout[])
{
ifstream fin(filenamein);
if(fin.is_open())
{
    ofstream fout(filenameout);

    char c;
    while (fin.good())
    {
        fin.get(c);
        fout << c;
    }

    fout.close();
    fin.close();

    return true;
}
return false;
}

2 个答案:

答案 0 :(得分:0)

您可能对Boost Spirit库感兴趣。

答案 1 :(得分:0)

如果您只想让代码将一个文件复制到另一个文件,则可以使用以下代码。当然,正如你所看到的,实现这一目标的方法不止一种。

int copy_file()
{
    ifstream input("c:\\input.txt", std::ios::in|std::ios::binary);

    if(!input.good())
    {
        // error opening input file
        return -1;
    }

    ofstream output("c:\\output.txt", std::ios::trunc|std::ios::binary);

    if(!output.good())
    {
        // error opening output file
        return -2;
    }

    output << input.rdbuf();

    if(!output.good())
    {
        // writing to file failed
        return -3;
    }

    return 0;
}