繁体   English   中英

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

[英]Save Int Data into Text File in 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 *)什么区别,但两者给出的结果相同?

这是因为您将其强制转换为指针,所以输出将是指针。

由于data是一个普通值变量,因此只需照常编写即可:

outfile << data << '\n';

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

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

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

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

“%x”是十六进制数的说明符。 检查此表: http : //www.cplusplus.com/reference/cstdio/printf/

使用“%d”输出一个小数。

编辑:关于铸造,请参阅:

Reinterpret_cast与C样式转换

这是使用ofstream f的非常简单的示例。 最复杂的部分是传递给打开的参数,特别是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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM