如何在Django中将unicode转换为C++std::string
How to convert in Django unicode to C++ std::string
我在Django中用WWW接口用C++开发了一个应用程序。到目前为止,我已经在C++中使用Boost.Python包装器将框架编译为Linux中的共享对象。
现在我尝试在Django中运行这个框架。当我传递表单"CharField"中的字符串时,我会收到以下错误:
Python argument types in
CoreSystem.setOutput(CoreSystem, unicode)
did not match C++ signature:
setOutput(CoreSystem {lvalue}, std::string)
负责这一点的代码在这里:
form = AnalyzeForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
s.setOutput(cd["output"])
其中s是此CoreSystem对象。如果我这样输入:
s.setOutput("DatabaseOutput")
它运行良好。我还使用了str(cd["output"]),但之后什么也没发生。
我使用的是Django 1.4.1和Python 2.7.3
您可以使用encode
方法将Unicode字符串转换为字节字符串,然后将其发送到需要字符串的C++代码:
s.setOutput(cd["output"].encode("utf-8"))
UTF-8
编码是Unicode字符串的合理默认值。如果cd["output"]
已经是ASCII字符串,则编码不会更改它;如果它包含二进制数据,则会得到一个异常。
相关文章:
- 将无符号char*转换为std::istream*C++
- 将 int 数组转换为 std::vector<int*>
- 如何将这个std::字符串转换为std::基本字符串
- 哪些类型可以转换为std::any
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将函数参数"const char*"转换为"std::string_view"是
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 字符转换功能 std::isupper() & std::islower() C++17
- 将函数包装器转换为 std::function
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- std::转换move构造函数的模板专业化的变体
- STD ::转换如何用特定值初始化函子
- 对C++字符串使用 std 转换
- 等价于元组的std::转换
- std::转换为任意容器
- std::转换顺序保证
- std::转换产生奇怪的输出