用C ++将数据保存到文本文件中

时间:2014-03-26 08:26:32

标签: c++

我致力于将数据保存到文本文件中,并将其与另一个文本文件进行比较。以下是我工作的代码:

    ofstream outfile;
    outfile.open("Data",ios::out | ios :: binary);
    for(x=0; x<100; x++)
    {
       printf("data- %x\n", *(((int*)pImagePool)+x));
       int data =  *(((int*)pImagePool)+x);
       //outfile<<(reinterpret_cast<int *>(data))<<endl;    
       outfile<<(int *)data<<endl;     
    }

printf的结果为24011800,从文本文件中读取的结果为0x24011800

为什么会出现0x?我们能把它删除吗?

reinterpret_cast<int *> & (int *)之间的区别是什么,但两者都给出相同的结果?

3 个答案:

答案 0 :(得分:3)

这是因为你把它作为一个指针,所以输出将是一个指针。

由于data是一个正常的值变量,所以只需照常编写:

outfile << data << '\n';

我还建议你在编程C ++时停止使用printf,没有理由使用它。而是使用std::cout输出:

std::cout << "data- " << *(((int*)pImagePool)+x) << '\n';

或者如果你想要十六进制输出

std::cout << "data- " << std::hex << *(((int*)pImagePool)+x) << '\n';

答案 1 :(得分:0)

&#34;%×&#34;是十六进制数的说明符。请查看此表:http://www.cplusplus.com/reference/cstdio/printf/

使用&#34;%d&#34;输出小数。

编辑:关于演员表,请看:

Reinterpret_cast vs. C-style cast

答案 2 :(得分:0)

这是使用ofstream f的一个非常简单的例子。最复杂的部分是传递给open的参数,特别是std :: ios :: out,它指定文件方向。你也可以使用std :: ios:in来读取文件和cin。

// ex5.cpp

#include <string>
#include <iostream>
#include <fstream>
#include "hr_time.hpp"
#include >ios>

int main(int argc, char * argv[])
{
    CStopWatch sw;
    sw.startTimer() ;

    std::ofstream f;
    f.open("test.txt",std::ios::out ) ; 
    for (int i=0;i<100000;i++)
    {
      f << "A very long string that is number " << i << std::endl;
    }
    f.close() ;
    sw.stopTimer() ;
    std::cout << "This took " << sw.getElapsedTime() << " seconds" << std::endl;
    return 0;
}