Cfile file;
float (*letterToInt)[3];//这里存储的点数据,
file.write();这个函数有没有可以连续写letterTOInt里的数据;怎么把letterToInt[]的点(例如-58.2254)符号和小数点都写入txt文件中,最好是以二进制的形式。或者file有其他写入函数,或者其他写入方式。

解决方案 »

  1.   

    好像直接写就行,file.write(lettertoint),是不是就是二进制,写出来是乱码,事实上已经写了,
    用file.read读一下就知道了
    没用过CFile
      

  2.   

     
    virtual void Write(
       const void* lpBuf,
       UINT nCount 
    );
     直接写就行,不用转 后面的字节数要设对
      

  3.   

    不能直接写,我试过了,write必须是指针类的,但是只能一个字符一个字符的写,也就是-58.2254得写9次包括最后的'\0';
    我想要的是一次write写出来  而且
    virtual void Write(
      const void* lpBuf,
      UINT nCount
    ); 
    中的nCount对于不同的数据如何确定长度呢?
      

  4.   


    letterToInt 是指针数组,依次访问每个下标吧for(i=0;i<3;i++){
     float f=*letter[i];
     file.write(&f,sizeof(f));
    }
      

  5.   


    如果是 文本格式 则先转换 成字符串再写入float f;
    char str[20];
    sprintf(str,"%f",f);
    file.Write(str,strlen(str)+1);P.S.
    还要写入 '\0' ... 有点不伦不类
      

  6.   


    //写入文件测试
    CFile file;
    int a[20]={0,1,2,3,4};
    file.Open(L"test.txt",CFile::modeCreate|CFile::modeReadWrite);
    file.Write(a,sizeof(a));
    file.Flush();
    file.SeekToBegin();
    memset(a,0,sizeof(a));
    file.Read(a,sizeof(a));没有问题啊,可以直接写,你们都说什么呢?试了吗?
      

  7.   


            CFile file;
    float a[20]={0.123,1.234,2.345,3,4};
    file.Open(L"test.txt",CFile::modeCreate|CFile::modeReadWrite);
    file.Write(a,sizeof(a));
    file.Flush();
    file.SeekToBegin();
    memset(a,0,sizeof(a));
    file.Read(a,sizeof(a));浮点数也一样,也可以读出来
      

  8.   


    顶一个!用CFile.Write写浮点数组时,可以看成写字节数组。生成的文件肯定是二进制文件。
    所谓文本文件,是把你要写入的数据,写转换成字符串,然后把字符串写入文件中,而写字符串时,写入了也是字符串中的每个字符的ASCII码对应的二进制数据。
      

  9.   

    virtual void Write(
      const void* lpBuf,
      UINT nCount
    );
    都哪和哪啊,看一下定义不就知道了嘛
    就是按内存区字节数进行写入的
    文本方式不同之处是在于要处理一些特殊的字符,查msdn就明白了
    CFile::typeText   Sets text mode with special processing for carriage return–linefeed pairs (used in derived classes only).