首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是Python3的const char*

什么是Python3的const char*
EN

Stack Overflow用户
提问于 2015-05-10 18:47:43
回答 2查看 918关注 0票数 2

C中的函数如下所示:

代码语言:javascript
复制
char* test(const char* input, size_t length);

使用swig(3.0.2)导出到python扩展。

在python2中,运行test("hello",len("hello")),该函数运行得很好。

但在Python3中,运行config="hello";test(config.encode("utf-8"),len(config.encode("utf-8")))

代码语言:javascript
复制
TypeError: in method 'test', argument 0 of type 'char const *'

如何在Python3中使用此函数?

EN

回答 2

Stack Overflow用户

发布于 2015-05-11 14:58:20

我找出了真正的原因。

在Python3中,我应该使用与python2中相同的东西。这就是说test("hello",len("hello"))

但是Python3 the len("hello")并不适用于真正的UTF-8。

例如,

python2:

代码语言:javascript
复制
>>>len("测试")
4

python3:

代码语言:javascript
复制
>>>len("测试")
2

所以C函数的长度是错误的。

票数 0
EN

Stack Overflow用户

发布于 2015-05-10 19:16:28

在C中,const char *不可变字符串( char * )的类型。我不确定你为什么会得到这个错误--可能是因为你正在传递一个Python字符串,这个字符串是可变的--你可以修改/重新分配它:

代码语言:javascript
复制
config = "hello"
config = config[:2]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30150486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档