gpt4 book ai didi

c++ - 将 c_str() 存储为 char *

转载 作者:太空狗 更新时间:2023-10-29 19:58:34 25 4
gpt4 key购买 nike

我正在尝试使用具有以下声明的函数:extern int stem(struct stemmer * z, char * b, int k)1

我试图将 C++ 字符串传递给它,所以我想我会使用 c_str() 函数。它返回 const char *。当我尝试将它传递给 stem() 函数时,出现此错误:error: invalid conversion from 'const char*' to 'char*' [-fpermissive].

如何存储 c_str() 的结果,以便我可以将它与 stem 函数一起使用?

这是我正在运行的代码:

    struct stemmer * z = create_stemmer();
char * b = s.c_str();
int res = stem(z, b, s.length()); //this doesn't work
free_stemmer(z);
return s.substr(0,res);

最佳答案

您遇到的问题是 c_str() 返回一个无法修改的缓冲区 (const),而 stem()可能会修改您传入的缓冲区(不是 const)。您应该复制 c_str() 的结果以获得可修改的缓冲区。

页面http://www.cplusplus.com/reference/string/string/c_str/有更多关于 C++ 98 和 11 版本的信息。他们建议将 char * b = s.c_str(); 替换为以下内容:

char * b = new char [s.length()+1];
std::strcpy (b, s.c_str());

关于c++ - 将 c_str() 存储为 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com