c++ - 如何从 cpp 中的函数将字符串作为 char* 返回?
问题描述
例如,
如果str = "ab"
在函数中传递returnString()
我们有一个函数定义,比如
string returnString(string str)
{
str+='c';
return str;
}
输出 :-abc
但是如果我们的功能是
char* returnString(string str)
{
str+='c';
return str;
}
将给出如下错误:
[Error] cannot convert 'std::string' {aka 'std::__cxx11::basic_string<char>'} to 'char*' in return***
我该如何解决这个问题?
解决方案
您可以使用str.data()
orstr.c_str()
来获取指向第一个字符的指针,但您永远不应该在您的 function 之外返回 this。一旦您的字符串被破坏(仔细看,str
是函数堆栈上的本地副本),您正在邀请一个非常快速的访问冲突,如果您很幸运的话。
如果您尝试与 C API 交互,则可以strdup
在退出函数之前使用该指针,但请确保您了解新指针需要free
在稍后的某个时间点由您进行。
推荐阅读
- html - 为什么浮动标签会导致
- 在 CSS 中浮动?
- html - div 中的锚标记感觉不像是 div 的一部分
- c# - 从附加到多个游戏对象的一个脚本中调用函数
- asp.net-core - 如何在 ASP.NET Core 3.1 中隐藏 URL 参数
- css - 对角线 CSS
- .net - 代理请求失败:8080,因为对代理目标的请求失败
- sql - Google BigQuery SQL:如何将过程转换为返回表的函数?
- java - urlConnection write() 到 servlet 不会触发任何 servlet 方法
- android - 在android studio中成功API响应后刷新活动
- asp.net-core - 在 jamstack 中处理多个环境