C ++ сохранить данные матрицы в текст или XML (лучше) - PullRequest
1 голос
/ 09 декабря 2010

Я создал файл .dat с этой функцией

int writeData(double* v, int length, FILE* fh)
{
    FILE *Stream;     //Stream for output.
    double*Elem;     //Pointer to all the element to save.

    assert( fh!=NULL );
    Stream = fh;

    Elem=(double*)malloc((length+2)*sizeof(double));//Allocate memory to Elem.
    if(Elem==NULL)
    {
        printf("Can't allocate memory for saving the matrix!");
        return(0);
    }

    Elem[0]=(double)1;//Save the dimensions of the matrix.
    Elem[1]=(double)length;

    int i;
    for(i=0;i<length ;i++) 
        Elem[i+2]=v[i];

    if(fwrite((void*)Elem,sizeof(double),(length+2),Stream) < (unsigned)(length+2)) //Save the data.
    {
        printf("Error, can't save the matrix!");
        return(0);
    }
    free(Elem);
    return(1);
}

Теперь я хотел бы преобразовать этот файл в XML-файл или в текстовый файл ...

Есть советы? Спасибо

1 Ответ

2 голосов
/ 09 декабря 2010

Сохранение значений в текстовом формате легко:

int writeTextData(double* v, int length, FILE* fh)
{
   assert( fh!=NULL );
   fprintf(fh, "%d\n", length);
   for(int i=0;i<length ;i++)
      if(fprintf(fh, "%lf ", v[i]) <= 0)
      {
         printf("Error, can't save the matrix!");
         return(0);
      }
   return(1);
}

Сохранение длины с последующими числами длины.

XML лучше пишется с помощью библиотеки.

Хотя такой простой набор данных может быть сохранен в XML вручную (через fprintf), все более сложное потребует от вас сложного кодирования / экранирования и очень подвержено ошибкам, если вы не разбираетесь в XML - как уже было сказано, вам лучшеиспользовать библиотеку (например, libxml)

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