gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:48:19 25 4
gpt4 key购买 nike

我有一个由 Install Shield 通过 InstallScript 调用的 C++ API 函数:

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 并对其执行一些字符串操作。

最佳答案

LPCSTRconst char * 相同。

将这样的 C 风格字符串传递给函数调用就可以了。

返回指向局部函数变量的指针是不好的,因为这个局部变量在函数结束后不再存在。一旦您在 main(或调用该函数的任何地方)中使用指针,它就会指向一个不再属于您的内存,并且该值可能已经更改。

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

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

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

  3. 返回类似于 std::string 的内容。缺点:与#1 一样,函数签名发生变化,您必须更改它的调用方式。

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

InstallShield 希望您做的事情应该在文档中的某处。

关于c++ - 如何将 LPCSTR 传递给 C++ 函数转换为字符串并返回 LPCSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539558/

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