C ++ анализирует входной файл и копирует данные в выходной файл - PullRequest
0 голосов
/ 01 мая 2011

У меня есть файл с именем 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 голосов
/ 01 мая 2011

Если вы просто хотите, чтобы код копировал один файл в другой, следующий код может быть полезен.Конечно, есть несколько способов добиться этого, как вы можете видеть.

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;
}
0 голосов
/ 01 мая 2011

Вас может заинтересовать библиотека Boost Spirit .

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