我在C++.I中处理字符串数组的问题尝试了下面两个methods.Still无法解析problem...Here :当我使用:
string* fun(string* a,string*b)
{
string c[];
return c; /* c is string array type*/
} 它返回存储在字符串数组C中的第一个字符串。我希望返回整个字符串数组。当我使用的时候:
vector<string> fun(vector<string> a,vector<string> b){
vector<string> c;
return c;
}尽管如此,我还是有一些错误。
你能告诉我在这两种情况下问题出在哪里吗?需要进行哪些修改才能获得所需的结果。如何在C++中处理字符串数组?提前感谢!!
发布于 2012-06-13 13:40:16
在第一个版本中,您将返回一个指向局部变量(数组)的指针,当您离开作用域时,该变量将不再存在。您需要在堆上创建数组,例如使用malloc或new。如果您手动分配它,不要忘记释放它。
在第二个版本中,您将返回在函数中声明的vector的副本(如果您在返回的vector中修改string,则它们不会在a et b中被修改)。您正在创建一个空的vector,并且没有在其中添加任何内容,因此它将不包含任何string。
发布于 2012-06-13 13:44:48
如果你必须返回一个比string更复杂的对象,你应该向你的函数传递一个向量的链接(在你的代码中),并用值填充它。这是一种快速而正确的方法。
vector<string> fun(vector<string> a,vector<string> b, vector<string>& result){
res.push_back("one");
res.push_back("two");
res.push_back("three");
}发布于 2012-06-13 13:57:03
在您的第一个代码片段中,您可以尝试使用new进行初始化,以便自己分配空间。
string* func() {
string* c = new string[3];
c[0] = "Hello";
c[1] = "World";
c[2] = "<3";
return c;
}在main中:
m = func();
for(int i = 0; i < 3; i++)
{
cout << m[i] << endl;
}这应该可以防止它在函数结束时失去作用域。别忘了释放空间。注意,您返回的是指向数组的指针,而不是数组。此外,运行您的第二段代码也没有问题。请始终分享你得到的错误。
https://stackoverflow.com/questions/11008759
复制相似问题