【发布时间】:2013-10-01 12:17:21
【问题描述】:
我正在尝试从包含纯文本标题后跟二进制图像信息的图像文件中剥离标题。作为对此的先驱,我想将文件信息复制到字符串流中进行编辑。执行此操作时,我遇到了一些问题,这些问题导致我尝试简单地读取文件并将其作为新文件再次写回以进行调试。当我这样做时,新文件最终比原始文件大 1kb。在 UltraEdit 中进行二进制比较时,似乎在任何出现十六进制字符 0A(我相信换行)的地方,我的程序似乎都在它之前添加了 0D(回车)。我想知道这种行为的原因是什么以及如果可能的话如何避免它。代码 sn -p 如下:
....
std::string inputFilename = argv[1];
std::ifstream in( argv[1],ios::out | ios::binary);
if ( in )
{
std::stringstream fileStream;
fileStream<<in.rdbuf();
cout<<fileStream.str().length(); //debugging
in.close();
ofstream myfile;
myfile.open("selfoutput");
myfile<<fileStream.str();
myfile.close();
....
感谢您的帮助! -大卫
【问题讨论】:
标签: c++ file-io stringstream carriage-return file-copying