[英]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”输出一个小数。
编辑:关于铸造,请参阅:
这是使用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.