我正在尝试使用struct.pack将填充的字符串写入文件,但似乎3.x解释器这不再起作用了.我如何使用它的一个例子:
mystring = anotherString+" sometext here"
output = struct.pack("30s", mystring);
Run Code Online (Sandbox Code Playgroud)
这在早期版本的python中似乎没问题,但是对于3,它会产生一个要求字节对象的错误.文档似乎暗示它应该将任何字符串转换为UTF-8字节对象而没有抱怨(我不关心多字节字符是否恰好被截断):
http://docs.python.org/release/3.1.5/library/struct.html: "的C,S和P转换码对字节对象进行操作,但用这样的代码包装还支持STR对象,这是使用编码UTF-8".
我是否误读了文档以及其他人如何使用带有字符串的struct.pack?
我有一个在任何类型的STL容器上运行的函数,需要将容器的元素类型传递给另一个模板函数.实际上,当我说任何容器类型时,我并不是真的意思.严格只有矢量和数组.我有这样的事情:
template <typename T> int ProcessData(T data)
{
return DoInternalProcessing<T::value_type>(data.data(), data.size());
}
Run Code Online (Sandbox Code Playgroud)
MSVC11接受此代码,但gcc不接受.它出什么问题了?对于gcc,我还想过将值类型作为参数但是那时需要调用者指定T(容器类型),这对于std :: array来说非常笨重,而这个函数的主要目的是提供一个非常简单的接口从基础数据中抽象出来.