我必须通过 boost::python 将一些二进制文件从 Python 转换为 C++。二进制文件可能来自图像或文本文件。但是将图像文件的二进制文件转换为 c++ 时会出现一些错误。以下是一个示例。
C++
#include <boost/python.hpp>
#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
#include <fstream>
#include <iostream>
using namespace boost::python;
void greet(char *name,char *ss)
{
std::ofstream fout(name,std::ios::binary);
std::cout<< "This length is:" << strlen(ss) <<std::endl;
fout.write(ss.strlen);
fout.close();
return;
}
BOOST_PYTHON_MODULE(ctopy)
{
def("greet",greet);
}
Python:
import ctopy
#It is right.
f=open("t1.txt","rb")
ctopy.greet("t2.txt",f.read())
f.close()
#Do a error.There isn't data in the file "p2.jpg".
f2=open("p1.jpg","rb")
ctopy.greet("p2.jpg",f2.read()) #error.the file "p2.jpg" will be a empty file.
f2.close()
如何将图像的二进制文件转换为 C++?