首页 > 解决方案 > 如何从 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***

我该如何解决这个问题?

标签: c++compiler-errorsc-stringsreturn-typestdstring

解决方案


您可以使用str.data()orstr.c_str()来获取指向第一个字符的指针,但您永远不应该在您的 function 之外返回 this。一旦您的字符串被破坏(仔细看,str是函数堆栈上的本地副本),您正在邀请一个非常快速的访问冲突,如果您很幸运的话。

如果您尝试与 C API 交互,则可以strdup在退出函数之前使用该指针,但请确保您了解新指针需要free在稍后的某个时间点由您进行。


推荐阅读