首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C++中的函数返回字符串数组

从C++中的函数返回字符串数组
EN

Stack Overflow用户
提问于 2012-06-13 13:34:07
回答 5查看 6.8K关注 0票数 2

我在C++.I中处理字符串数组的问题尝试了下面两个methods.Still无法解析problem...Here :当我使用:

代码语言:javascript
复制
string* fun(string* a,string*b) 
{
    string c[];
    return c; /* c is string array type*/ 
} 

它返回存储在字符串数组C中的第一个字符串。我希望返回整个字符串数组。当我使用的时候:

代码语言:javascript
复制
vector<string> fun(vector<string> a,vector<string> b){
    vector<string> c;
    return c;
}

尽管如此,我还是有一些错误。

你能告诉我在这两种情况下问题出在哪里吗?需要进行哪些修改才能获得所需的结果。如何在C++中处理字符串数组?提前感谢!!

EN

回答 5

Stack Overflow用户

发布于 2012-06-13 13:40:16

在第一个版本中,您将返回一个指向局部变量(数组)的指针,当您离开作用域时,该变量将不再存在。您需要在堆上创建数组,例如使用mallocnew。如果您手动分配它,不要忘记释放它。

在第二个版本中,您将返回在函数中声明的vector的副本(如果您在返回的vector中修改string,则它们不会在a et b中被修改)。您正在创建一个空的vector,并且没有在其中添加任何内容,因此它将不包含任何string

票数 1
EN

Stack Overflow用户

发布于 2012-06-13 13:44:48

如果你必须返回一个比string更复杂的对象,你应该向你的函数传递一个向量的链接(在你的代码中),并用值填充它。这是一种快速而正确的方法。

代码语言:javascript
复制
vector<string> fun(vector<string> a,vector<string> b, vector<string>& result){
  res.push_back("one");
  res.push_back("two");
  res.push_back("three");
}
票数 1
EN

Stack Overflow用户

发布于 2012-06-13 13:57:03

在您的第一个代码片段中,您可以尝试使用new进行初始化,以便自己分配空间。

代码语言:javascript
复制
string* func() {
    string* c = new string[3];
    c[0] = "Hello";
    c[1] = "World";
    c[2] = "<3";
    return c;
}

在main中:

代码语言:javascript
复制
m = func();
for(int i = 0; i < 3; i++)
{
    cout << m[i] << endl;
}

这应该可以防止它在函数结束时失去作用域。别忘了释放空间。注意,您返回的是指向数组的指针,而不是数组。此外,运行您的第二段代码也没有问题。请始终分享你得到的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11008759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档