如何将LPCSTR传递给c++函数转换为字符串并返回LPCSTR ?



我有一个c++ API函数,通过InstallScript安装Shield调用:

SQLHELPER_API LPCSTR GetAvailableAppName(LPCSTR appNameP)
{
    //return "this works just fine";
    std::string newAppName = "I work, maybe?";
    LPCSTR returnVal = newAppName.c_str();
    return returnVal;
}

唯一返回的是一个空字符串。如果我只是返回传入变量"appNameP"它也会返回那个

我的主要问题是我需要传递一个LPCSTR并对其执行一些字符串操作。

A LPCSTRconst char *相同。

将这样的c风格字符串传递给函数调用是可以的。

返回指向局部函数变量的指针是不合适的,因为该局部变量在函数结束后不再存在。只要你在main中使用指针(或者在函数被调用的任何地方),它就指向不再属于你的内存,并且值可能已经改变了。

有几种可能性,每种都有缺点:

  1. 只使用你得到的内存作为参数(例如。appNameP,因为这必须是外部的东西,并且在函数结束后仍然存在)。缺点:您需要传递适合该目的的东西=>函数签名或至少参数的需求更改,并且您必须检查/更改它的调用方式。

  2. new分配一些东西。缺点:稍后,在外面的某个地方,必须调用delete[]

  3. 返回类似std::string的东西。缺点:和第1条一样,函数签名发生了变化,您必须改变它的调用方式。

如果InstallShield自己调用这个函数:

InstallShield希望你做的应该在文档的某个地方。

相关内容

  • 没有找到相关文章

最新更新